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 693 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.
  • SMEasyS Offline
    SMEasyS Offline
    SMEasy
    wrote on last edited by SMEasy
    #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.A.SEZENA Offline
      A.A.SEZENA Offline
      A.A.SEZEN
      wrote on 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();
      }
      
      SMEasyS 1 Reply Last reply
      0
      • A.A.SEZENA A.A.SEZEN

        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();
        }
        
        SMEasyS Offline
        SMEasyS Offline
        SMEasy
        wrote on last edited by
        #3

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

        1 Reply Last reply
        0

        • Login

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