Hallo,
Ich habe wieder einmal ein dummes Problem, das mich schon etliche Stunden gekostet hat. Vielleicht hat von euch wer eine Idee:
Der folgende Code soll eine dynamisch erstellte Html-Seite drucken. Das macht er auch, aber nur beim ersten Aufruf. Danach wird das Signal paintRequested nicht mehr aufgerufen und der Inhalt von der Druckvorschau wird nicht mehr aktualisiert.
Beim Klick auf drucken in der Druckvorschau wird dann aber doch das neue Dokument gedruckt (nicht das alte Angezeigte weil dann auch die Funktion (SLOT) printPreview aufgerufen wird).
Was hab ich da übersehen?
Ich habe wieder einmal ein dummes Problem, das mich schon etliche Stunden gekostet hat. Vielleicht hat von euch wer eine Idee:
Der folgende Code soll eine dynamisch erstellte Html-Seite drucken. Das macht er auch, aber nur beim ersten Aufruf. Danach wird das Signal paintRequested nicht mehr aufgerufen und der Inhalt von der Druckvorschau wird nicht mehr aktualisiert.
Beim Klick auf drucken in der Druckvorschau wird dann aber doch das neue Dokument gedruckt (nicht das alte Angezeigte weil dann auch die Funktion (SLOT) printPreview aufgerufen wird).
Was hab ich da übersehen?
Code:
#include "printfunctions.h"
PrintFunctions::PrintFunctions(QObject *parent):QObject(parent)
{
rezPrinter = new QPrinter();
dialog = new QPrintDialog(rezPrinter);
prevDialog = new QPrintPreviewDialog(rezPrinter);
connect(prevDialog, SIGNAL(paintRequested(QPrinter *)), SLOT(printPreview(QPrinter *)));
}
PrintFunctions::~PrintFunctions()
{
delete rezPrinter;
delete dialog;
delete prevDialog;
}
bool PrintFunctions::printHTML(QString strHtml, bool showPreview)
{
this->strHtml = strHtml;
if (showPreview == true)
{
if(prevDialog->exec() == QDialog::Rejected)
{
return false;
}
}
else
{
if(dialog->exec() == QDialog::Rejected)
{
return false;
}
QTextEdit te;
te.setHtml(strHtml);
te.print(rezPrinter);
}
return true;
}
void PrintFunctions::printPreview(QPrinter *printer)
{
QTextEdit te;
te.setHtml(strHtml);
te.print(printer);
}
Zuletzt bearbeitet: