[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: Re: Printing with QSimpleRichText
From: Matthias Ettrich <ettrich () trolltech ! com>
Date: 2000-12-04 18:54:44
[Download RAW message or body]
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 <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic