diff options
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r-- | src/mainwindow.cpp | 25 |
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); |