Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. how to show photo in QPrintPreviewDialog
QtWS25 Last Chance

how to show photo in QPrintPreviewDialog

Scheduled Pinned Locked Moved Solved General and Desktop
6 Posts 2 Posters 2.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    ARASHz4
    wrote on last edited by
    #1

    hi
    i want to print a photo & before printing show a preview

    i print a photo whit this code:

    QPrinter PhotoPrint;
    
        QPrintDialog *PhotoPrintDialog = new QPrintDialog(&PhotoPrint,0);
    
        if(PhotoPrintDialog->exec() == QDialog::Accepted)
        {
            QImage Photo(ui->PhotoLable->pixmap()->toImage());
            QPainter painter(&PhotoPrint);
            painter.drawImage(QPoint(0,0),Photo);
            painter.end();
        }
    

    how to show a preview before print?

    1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #2

      Hi! You can use QPrintPreviewDialog Class for this.

      A 1 Reply Last reply
      0
      • ? A Former User

        Hi! You can use QPrintPreviewDialog Class for this.

        A Offline
        A Offline
        ARASHz4
        wrote on last edited by
        #3

        @Wieland Hi
        i know this, can show me example for photo

        1 Reply Last reply
        0
        • ? Offline
          ? Offline
          A Former User
          wrote on last edited by
          #4

          mainwindow.h

          #ifndef MAINWINDOW_H
          #define MAINWINDOW_H
          
          #include <QMainWindow>
          #include <QPixmap>
          #include <QPrinter>
          #include <QPrintDialog>
          #include <QPrintPreviewDialog>
          
          namespace Ui {
          class MainWindow;
          }
          
          class MainWindow : public QMainWindow
          {
              Q_OBJECT
          
          public:
              explicit MainWindow(QWidget *parent = 0);
              ~MainWindow();
          
              void printerPaint(QPrinter *printer);
          
          private slots:
              void on_pushButton_clicked();
              void on_pushButton_2_clicked();
          
          private:
              Ui::MainWindow *ui;
              QPixmap m_pixmap{"/home/patrick/m.png"};
              QPrinter m_printer;
              QPrintDialog m_printDialog{&m_printer};
              QPrintPreviewDialog m_printPreviewDialog{&m_printer};
          };
          
          #endif // MAINWINDOW_H
          

          mainwindow.cpp

          #include "mainwindow.h"
          #include "ui_mainwindow.h"
          
          #include <QPainter>
          
          MainWindow::MainWindow(QWidget *parent) :
              QMainWindow(parent),
              ui(new Ui::MainWindow)
          {
              ui->setupUi(this);
              ui->label->setPixmap(m_pixmap);
              connect(&m_printPreviewDialog, &QPrintPreviewDialog::paintRequested,
                      this, &MainWindow::printerPaint);
          }
          
          MainWindow::~MainWindow()
          {
              delete ui;
          }
          
          void MainWindow::printerPaint(QPrinter *printer)
          {
              QPainter painter(printer);
              painter.drawPixmap(QPoint(0,0), m_pixmap);
          }
          
          // Print without preview
          void MainWindow::on_pushButton_clicked()
          {
              if (m_printDialog.exec() == QDialog::Accepted)
                  printerPaint(&m_printer);
          }
          
          // Show preview, potentially print from this dialog
          void MainWindow::on_pushButton_2_clicked()
          {
              m_printPreviewDialog.exec();
          }
          
          A 1 Reply Last reply
          2
          • ? A Former User

            mainwindow.h

            #ifndef MAINWINDOW_H
            #define MAINWINDOW_H
            
            #include <QMainWindow>
            #include <QPixmap>
            #include <QPrinter>
            #include <QPrintDialog>
            #include <QPrintPreviewDialog>
            
            namespace Ui {
            class MainWindow;
            }
            
            class MainWindow : public QMainWindow
            {
                Q_OBJECT
            
            public:
                explicit MainWindow(QWidget *parent = 0);
                ~MainWindow();
            
                void printerPaint(QPrinter *printer);
            
            private slots:
                void on_pushButton_clicked();
                void on_pushButton_2_clicked();
            
            private:
                Ui::MainWindow *ui;
                QPixmap m_pixmap{"/home/patrick/m.png"};
                QPrinter m_printer;
                QPrintDialog m_printDialog{&m_printer};
                QPrintPreviewDialog m_printPreviewDialog{&m_printer};
            };
            
            #endif // MAINWINDOW_H
            

            mainwindow.cpp

            #include "mainwindow.h"
            #include "ui_mainwindow.h"
            
            #include <QPainter>
            
            MainWindow::MainWindow(QWidget *parent) :
                QMainWindow(parent),
                ui(new Ui::MainWindow)
            {
                ui->setupUi(this);
                ui->label->setPixmap(m_pixmap);
                connect(&m_printPreviewDialog, &QPrintPreviewDialog::paintRequested,
                        this, &MainWindow::printerPaint);
            }
            
            MainWindow::~MainWindow()
            {
                delete ui;
            }
            
            void MainWindow::printerPaint(QPrinter *printer)
            {
                QPainter painter(printer);
                painter.drawPixmap(QPoint(0,0), m_pixmap);
            }
            
            // Print without preview
            void MainWindow::on_pushButton_clicked()
            {
                if (m_printDialog.exec() == QDialog::Accepted)
                    printerPaint(&m_printer);
            }
            
            // Show preview, potentially print from this dialog
            void MainWindow::on_pushButton_2_clicked()
            {
                m_printPreviewDialog.exec();
            }
            
            A Offline
            A Offline
            ARASHz4
            wrote on last edited by
            #5

            @Wieland thank but whare you tell qprintperview set a pohto for preview?

            ? 1 Reply Last reply
            0
            • A ARASHz4

              @Wieland thank but whare you tell qprintperview set a pohto for preview?

              ? Offline
              ? Offline
              A Former User
              wrote on last edited by
              #6

              When the preview dialog is executed it emits a signal and that is connected to MainWindow::printerPaint. Inside the latter function we paint the photo. The photo is stored inside m_pixmap which is initialized in the header file in this example. Printing without preview uses MainWindow::printerPaint, too, so we don't have to copy and paste the exact same code again.

              1 Reply Last reply
              2

              • Login

              • Login or register to search.
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • Users
              • Groups
              • Search
              • Get Qt Extensions
              • Unsolved