Hi friends,

I'm trying to print some pages from a QPrintPreviewWidget, to call QPrintDialog to set the range of pages want to print, is printed every page, not the range. What I'm doing wrong? Any suggestions?

Follow small code:

Report.h
Qt Code:
  1. class Report: public QMainWindow
  2. {
  3. Q_OBJECT
  4. public:
  5. Report(QWidget *parent = 0, QWidget *widgetReport = 0);
  6. QPrinter *printer;
  7. QPrintPreviewWidget *printPreview;
  8.  
  9. private:
  10. Ui::Report ui;
  11.  
  12. private slots:
  13. void print();
  14. };
  15. #endif
To copy to clipboard, switch view to plain text mode 

Report.cpp
Qt Code:
  1. #include "Report.h"
  2. Report::Report(QWidget *parent, QWidget *widgetReport)
  3. :QMainWindow(parent)
  4. {
  5. ui.setupUi(this);
  6. setAttribute(Qt::WA_DeleteOnClose);
  7. this->showMaximized();
  8.  
  9. printer = new QPrinter(QPrinter::HighResolution);
  10. printer->setOutputFormat(QPrinter::NativeFormat);
  11. printer->setOrientation(QPrinter::Portrait);
  12. printer->setPaperSize(QPrinter::A4);
  13. printer->setFullPage(true);
  14.  
  15. printPreview = new QPrintPreviewWidget(printer, this);
  16. ui.gridLayout1->addWidget(printPreview);
  17.  
  18. connect(ui.ActPrint, SIGNAL(triggered()), this, SLOT(print()));
  19. connect(printPreview, SIGNAL(paintRequested(QPrinter*)), widgetReport, SLOT(Print(QPrinter*)));
  20.  
  21. printPreview->fitInView();
  22. printPreview->show();
  23. }
  24.  
  25. void Report::print()
  26. {
  27. QPrintDialog printDialog(printer, printPreview);
  28. printDialog.setMinMax(1, printPreview->numPages());
  29. if (printDialog.exec() == QDialog::Accepted)
  30. {
  31. qDebug() << printPreview->numPages(); // OK, its return 3 pages, but print all if range is one or two.
  32. printPreview->print();
  33. }
  34. }
To copy to clipboard, switch view to plain text mode 

Thanks,

Marcelo E. Geyer