From kde-devel Mon Dec 04 18:54:44 2000 From: Matthias Ettrich Date: Mon, 04 Dec 2000 18:54:44 +0000 To: kde-devel Subject: Re: Printing with QSimpleRichText X-MARC-Message: https://marc.info/?l=kde-devel&m=97595580907703 Sunday 03 December 2000 19:14 wrote Peter Putzer: > I'd like to use a QSimpleRichText object (created with a "verticalBreak" > > 0) to print a richtext document, yet only the first page is actually > printed. > > As the real printing is done in QRichText (an undocumented internal > class) I haven't been able to really understand what's going wrong. > > Anyone got an idea? Have a look at qt/examples/helpviewer/helpwindow.cpp: QPrinter printer; printer.setFullPage(TRUE); if ( printer.setup() ) { QPainter p( &printer ); QPaintDeviceMetrics metrics(p.device()); int dpix = metrics.logicalDpiX(); int dpiy = metrics.logicalDpiY(); const int margin = 72; // pt QRect body(margin*dpix/72, margin*dpiy/72, metrics.width()-margin*dpix/72*2, metrics.height()-margin*dpiy/72*2 ); QFont font("times", 10); QSimpleRichText richText( browser->text(), font, browser->context(), browser->styleSheet(), browser->mimeSourceFactory(), body.height() ); richText.setWidth( &p, body.width() ); QRect view( body ); int page = 1; do { richText.draw( &p, body.left(), body.top(), view, colorGroup() ); view.moveBy( 0, body.height() ); p.translate( 0 , -body.height() ); p.setFont( font ); p.drawText( view.right() - p.fontMetrics().width( QString::number(page) ), view.bottom() + p.fontMetrics().ascent() + 5, QString::number(page) ); if ( view.top() >= richText.height() ) break; printer.newPage(); page++; } while (TRUE); } Hope that helps, Matthias >> Visit http://master.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<