Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. QPrintPreviewDialog Image is not shown/Bild wird nicht gezeigt
Forum Updated to NodeBB v4.3 + New Features

QPrintPreviewDialog Image is not shown/Bild wird nicht gezeigt

Scheduled Pinned Locked Moved Solved German
qprintpreviewdiqimageqpaintqprinter
3 Posts 2 Posters 824 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.
  • S Offline
    S Offline
    SMEasy
    wrote on 4 Feb 2022, 21:19 last edited by SMEasy 2 Apr 2022, 21:25
    #1

    German version

    Hallo, ich habe folgendes Problem: ich habe ein Bild in QImage this->image und möchte eine Druckvorschau zeigen: hier der genutzte Code

    void MainWindow::preview() {
        // FIXME: Preview not working
        QPrinter printer(QPrinter::HighResolution);
        QPainter painter;
        painter.begin(&printer);
        QRect rect = painter.viewport();
        QSize size = image.size();
        size.scale(rect.size(), Qt::KeepAspectRatio);
        painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
        painter.setWindow(image.rect());
        painter.drawImage(0, 0, image);
        painter.end();
    
        // Open preview dialog and print if asked
        QPrintPreviewDialog dialog(&printer,this);
        dialog.exec();
    }
    

    ich weiß, dass ich kein connect habe um zu drucken, wegen eines Fehlers(Druck dialog öffnet sich vor Vorschau) und es schon im QPrintPreviewDialog automatisch gemacht wird
    So sieht es aktuell aus:
    5bda58ea-c1a8-4f9c-849c-6b3332d6d731-image.png

    Sieht irgendjemand eventuell den Fehler, denn mit den gleichen Code funktioniert das Drucken aber die Druckvorschau nicht

    English version

    Hello, I have the following problem: I have an image in QImage this->image and want to show a print preview: here is the code used

    void MainWindow::preview() {
        // FIXME: Preview not working
        QPrinter printer(QPrinter::HighResolution);
        QPainter painter;
        painter.begin(&printer);
        QRect rect = painter.viewport();
        QSize size = image.size();
        size.scale(rect.size(), Qt::KeepAspectRatio);
        painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
        painter.setWindow(image.rect());
        painter.drawImage(0, 0, image);
        painter.end();
    
        // Open preview dialog and print if asked
        QPrintPreviewDialog dialog(&printer,this);
        dialog.exec();
    }
    

    I know that I don't have connect to print because of an error(print dialog opens before preview) and it's already done automatically in QPrintPreviewDialog
    This is how it currently looks:
    5bda58ea-c1a8-4f9c-849c-6b3332d6d731-image.png

    Does anyone see the error, because with the same code printing work but the print preview doesn't.
    Thanks in advice!

    1 Reply Last reply
    0
    • A Offline
      A Offline
      A.A.SEZEN
      wrote on 5 Feb 2022, 08:07 last edited by
      #2

      Try your code like this.

      QPrinter printer(QPrinter::HighResolution);
        // Open preview dialog and print if asked
        QPrintPreviewDialog dialog(&printer,this);
        connect(&dialog, &QPrintPreviewDialog::paintRequested, this, &MainWindow::printPreview);
        dialog.exec();
      

      void MainWindow::printPreview(QPrinter *printer)
      {
          QPainter painter;
          painter.begin(printer);
          QRect rect = painter.viewport();
          QSize size = image.size();
          size.scale(rect.size(), Qt::KeepAspectRatio);
          painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
          painter.setWindow(image.rect());
          painter.drawImage(0, 0, image);
          painter.end();
      }
      
      S 1 Reply Last reply 5 Feb 2022, 12:55
      0
      • A A.A.SEZEN
        5 Feb 2022, 08:07

        Try your code like this.

        QPrinter printer(QPrinter::HighResolution);
          // Open preview dialog and print if asked
          QPrintPreviewDialog dialog(&printer,this);
          connect(&dialog, &QPrintPreviewDialog::paintRequested, this, &MainWindow::printPreview);
          dialog.exec();
        

        void MainWindow::printPreview(QPrinter *printer)
        {
            QPainter painter;
            painter.begin(printer);
            QRect rect = painter.viewport();
            QSize size = image.size();
            size.scale(rect.size(), Qt::KeepAspectRatio);
            painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
            painter.setWindow(image.rect());
            painter.drawImage(0, 0, image);
            painter.end();
        }
        
        S Offline
        S Offline
        SMEasy
        wrote on 5 Feb 2022, 12:55 last edited by
        #3

        @A-A-SEZEN Thanks, it actually works now

        1 Reply Last reply
        0

        3/3

        5 Feb 2022, 12:55

        • Login

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