summaryrefslogtreecommitdiff
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 2de4853..1eb136e 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -48,12 +48,15 @@ class MainWindow::MainWindowPrivate
{
public:
MainWindowPrivate()
- {}
+ : printer(0)
+ {}
QDockWidget *itemPropsDock;
QStackedWidget *propertyEditorsStack;
QMap<QString, int> propertyEditorsIndexes;
+ QPrinter *printer;
+
QAction *printAction;
QAction *printPreviewAction;
@@ -513,25 +516,33 @@ MainWindow::exportDocument()
}
void
+MainWindow::initPrinter()
+{
+ if (!d->printer)
+ d->printer = new QPrinter();
+}
+
+void
MainWindow::print()
{
- QPrinter printer;
- QPrintDialog printDialog(&printer, this);
+ initPrinter();
+ QPrintDialog printDialog(d->printer, this);
if (printDialog.exec() == QDialog::Accepted) {
- paintOnPrinter(&printer);
+ printPreview(d->printer);
}
}
void
MainWindow::printPreview()
{
- QPrintPreviewDialog printPreviewDialog(this);
- connect(&printPreviewDialog, SIGNAL(paintRequested(QPrinter*)), SLOT(paintOnPrinter(QPrinter*)));
+ QPrintPreviewDialog printPreviewDialog(d->printer, this);
+ connect(&printPreviewDialog, SIGNAL(paintRequested(QPrinter*)),
+ SLOT(printPreview(QPrinter*)));
printPreviewDialog.exec();
}
void
-MainWindow::paintOnPrinter(QPrinter *printer)
+MainWindow::printPreview(QPrinter *printer)
{
QPainter painter(printer);
m_model->setPrinting(true);