Hordi
Гость
|
|
« : Июнь 20, 2006, 12:23 » |
|
Возникла проблема при печати сабжа. Qt-3.3.6, linux.
Хочу напечатать html-текст. Для простоты печатаю <b>тест</b>, но на принтер выводится как простой текст, т.е. с тегами форматирования. При печати использую код, описанный в примерах, т.е.:
bool CSaler::print(const QString &str,bool preview) { qDebug("CSaler::print[%d]: %s",(int)QStyleSheet::mightBeRichText(str),(const char*)str);
(bool)m_printer->setup(0); QPainter pa; if(!pa.begin(m_printer)){ g_app->showErrorMessage(tr("Error!"),tr("Print error!"),this); return false; } QTextEdit te; QTextEdit *e = &te; QPaintDeviceMetrics metrics( pa.device() ); int dpiy = metrics.logicalDpiY(); int margin = (int) ( (2/2.54)*dpiy ); // 2 cm margins QRect view( margin, margin, metrics.width() - 2*margin, metrics.height() - 2*margin );
QSimpleRichText richText( QStyleSheet::convertFromPlainText(str), QFont(), e->context(), e->styleSheet(), e->mimeSourceFactory(), view.height() ); richText.setWidth( &pa, view.width() ); int page = 1; do{ richText.draw( &pa, margin, margin, view, colorGroup() ); view.moveBy( 0, view.height() ); pa.translate( 0 , -view.height() ); pa.drawText( view.right() - pa.fontMetrics().width( QString::number( page ) ), view.bottom() + pa.fontMetrics().ascent() + 5, QString::number( page ) ); if ( view.top() - margin >= richText.height() ) break; m_printer->newPage(); ++page; }while(1); return true; }
добавлено спустя 39 минут:
Убрал QStyleSheet::convertFromPlainText(str) и все заработало...
|