Seite 1 von 1

QTextDocument::pageCount gibt immer 1 zurück ??

Verfasst: 18. Dezember 2009 12:52
von Tuxing
Hallo,
ich habe ein Problem mit dem QTextDocument. Ziel ist es in ein QTextEdit HTML Text einzufügen (mit insertHtml) und mit Hilfe von QTextEdit::document()->pageCount die aktuell gebrauchte Seitenzahl auszugeben. Um zu gucken wie viele Seiten gerade wirklich gebraucht werden speichere ich den Text immer mit Hilfe eines QPrinters in eine PDF.
Der Quellcode dazu sieht folgendermaßen aus:

Code: Alles auswählen


QTextEdit *text = new QTextEdit(this);

// Einstellungen des Printers
QPrinter printer(QPrinter::HighResolution);
 printer.setOrientation(QPrinter::Portrait);
 printer.setPageSize(QPrinter::A4);
 printer.setResolution(72);
 printer.setOutputFormat(QPrinter::PdfFormat);
 printer.setOutputFileName(fileName);
 printer.newPage();

// Dem Dokument wird die Seitengröße mitgeteilt
QRectF pageRect(printer->pageRect());
QRectF body = QRectF(0,0,pageRect.width(), pageRect.height());
text->document()->setPageSize(body.size());


// Seiten ins TextEdit einfügen
QString page1 = " ganz viel Text .... ";
text->insertHtml(page1);
cout << "Seiten: " << edit->document()->pageCount() << endl;

QString page2 = " nochmal ganz viel Text .... ";
text->insertHtml(page2);
cout << "Seiten: " << edit->document()->pageCount() << endl;

QString page3 = " nochmal ganz viel Text .... ";
text->insertHtml(page3);
cout << "Seiten: " << edit->document()->pageCount() << endl;

// TextEdit in PDF drucken
text->document()->print(&printer);



Das Problem ist, dass mir die Ausgaben immer sagen dass die Seitenzahl 1 ist. Warum wird diese nicht erhöht ??

Danke

Verfasst: 18. Dezember 2009 12:53
von upsala
Wie groß ist denn deine Seite?
This property holds the page size that should be used for laying out the document.
By default, for a newly-created, empty document, this property contains an undefined size.

Verfasst: 18. Dezember 2009 13:54
von Tuxing
Das Zitat von dir hatte ich in der Doku auch gelesen. Danach kam ich auf die Idee dem QTextDocument die Größe der Seite zu definieren.
Als ich noch keine Größe definiert hatte, bekam ich immer schwachsinnswerte von pageCount zurück, zB. -256589652 .. weil der Wert der Seitengröße ja noch undefiniert war.

Jetzt hab ich die Seitengröße ja festgelegt und bekomme immer 1. Die Seitegröße soll die einer DINA4 Seite entsprechen.
Die Funktionen pageRect.width() und pageRect.height() geben folgende Werte für die Seitengröße (s. Quelltext: geben die Größen der Seite des printers aus ):

pageRect.width() = 547
pageRect.height() = 794

Welche Einheit das sein soll weiß ich nicht. Ich hoffe ich hab deine Frage wie groß die Seite denn ist richtig verstanden ;)

Danke für schonmal