QPrintPreviewDialog Image is not shown/Bild wird nicht gezeigt
-
German version
Hallo, ich habe folgendes Problem: ich habe ein Bild in
QImage this->image
und möchte eine Druckvorschau zeigen: hier der genutzte Codevoid 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:
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 usedvoid 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:
Does anyone see the error, because with the same code printing work but the print preview doesn't.
Thanks in advice! -
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(); }