Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: QPeter от Апрель 14, 2014, 11:43



Название: Вывод на печать из qwtplot [РЕШЕНО]
Отправлено: QPeter от Апрель 14, 2014, 11:43
Добрый день, подскажите пожалуйста как вывести на печать содержимое qwtplot, а то гугление не привело ни к каким успешным результатам. ???


Вообще в приложении на печать помимо содержимого qwtplot, выводится содержимое textbrowser и оно реализовано так:
Код:
void Form::on_pbPrintResult_clicked()
{
     QPrinter printer(QPrinter::HighResolution);
     QPrintDialog *dlg = new QPrintDialog(&printer, this);
     if (ui->textBrowser->textCursor().hasSelection())
         dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection);
     dlg->setWindowTitle(tr("Print Document"));
     if (dlg->exec() == QDialog::Accepted) {
         ui->textBrowser->print(&printer);
     }
     delete dlg;
}



Название: Re: Вывод на печать из qwtplot
Отправлено: VanDerSam от Апрель 14, 2014, 21:14
Здравствуйте. В исходных кодах Qwt (каталог examples) есть пример bode. В нём имеются средства печати графика.


Название: Re: Вывод на печать из qwtplot
Отправлено: QPeter от Апрель 15, 2014, 01:52
Спасибо большое, за то что откликнулись...разобрался.)

Вот код функции печати на будущее, мало ли кому нужно будет, чтоб не искали:
Код:
     QPrinter printer( QPrinter::HighResolution );

     QString docName = "График";
     if ( !docName.isEmpty() )
     {
         docName.replace ( QRegExp ( QString::fromLatin1 ( "\n" ) ), tr ( " -- " ) );
         printer.setDocName ( docName );
     }

     printer.setCreator( "Bode example" );
     printer.setOrientation( QPrinter::Landscape );

     QPrintDialog dialog( &printer );
     if ( dialog.exec() )
     {
         QwtPlotRenderer renderer;

         if ( printer.colorMode() == QPrinter::GrayScale )
         {
             renderer.setDiscardFlag( QwtPlotRenderer::DiscardBackground );
             renderer.setDiscardFlag( QwtPlotRenderer::DiscardCanvasBackground );
             renderer.setDiscardFlag( QwtPlotRenderer::DiscardCanvasFrame );
             renderer.setLayoutFlag( QwtPlotRenderer::FrameWithScales );
         }

         renderer.renderTo( ui->wgtResult, printer );
     }