Russian Qt Forum

Qt => Печать => Тема начата: Hordi от Июнь 20, 2006, 12:23



Название: Печать форматированного текста
Отправлено: 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) и все заработало...