Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Cała sprawa zaczeła się od tego że chciałam usunąć numeracje stron z moich dokumentów :/ ale ze względu że nie zaimplementowano tego w normalny sposób musiałam sobie poradzić inaczej więc napisałam takiego potwora.
zmienna html zawiera powiedzmy jakąś tabelkę i jeśli drukowałam za pomocą metody print (obiekt QTextDocument) wszystko było ok. Ale jak zabrałam się za QPainter i drukowanie to jakoś nie działa to poprawnie jeśli chodzi o zawijanie tekstu w tabeli
QTextDocument doc; doc.setHtml(css()+html); qDebug() << printer->pageRect().width(); QRect innerRect = printer->pageRect(); innerRect.setTop(innerRect.top() + 20); innerRect.setBottom(innerRect.bottom() - 30); QRect contentRect = QRect(QPoint(0,0), doc.size().toSize()); QRect currentRect = QRect(QPoint(0,0), innerRect.size()); QPainter painter(printer); int count = 0; painter.save(); painter.translate(0, 30); while (currentRect.intersects(contentRect)) { doc.drawContents(&painter, currentRect); count++; currentRect.translate(0, currentRect.height()); painter.restore(); painter.drawText(10, 10, QString("")); painter.drawText(10, printer->pageRect().bottom() - 10, QString("")); painter.save(); painter.translate(0, -currentRect.height() * count + 30); if (currentRect.intersects(contentRect)) printer->newPage(); } painter.restore(); painter.end();
Offline
A czemu nie wrócisz do QTextDocument skoro działało?
Offline
Ahm, to jakiś bug - http://bugreports.qt.nokia.com/browse/QTBUG-1688 . Może już szukałaś i to widziałaś:
http://www.qtcentre.org/threads/37861-Help-Remove-p … 5512642202362
http://stackoverflow.com/questions/2590668/customiz … qtextdocument
Coś takiego nie pomaga? W sumie tak tylko się zainteresowałem bo nie znam QT, ale nie zaszkodzi poznać.
Offline
Dzięki wielkie za pomoc faktycznie zasugerowana przez Ciebie metoda jest aż do bólu prosta :] (czasami lepiej jak ktoś inny zerknie na dane zagadnienie)
QSizeF pSize; pSize.setWidth(printer->width()); pSize.setHeight(printer->height()); QTextDocument doc; doc.setPageSize(pSize); doc.setHtml(css()+html); doc.print(printer);
PS tego buga znalazłam chwile po tym jak napisałam posta tego 2 :]
Offline
Strony: 1