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
Forum Updated to NodeBB v4.3 + New Features

how to show photo in QPrintPreviewDialog

Scheduled Pinned Locked Moved Solved General and Desktop
6 Posts 2 Posters 2.1k Views 1 Watching
  • 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