c++ - QChart in a QTextDocument -


i want generate pdf report containing text , qchart. use qtextdocument , add chart image, use qpdfwriter export pdf.

#include <qtgui> #include <qtcore> #include <qapplication> #include <qtcharts/qchartview> #include <qtcharts/qlineseries> using namespace qtcharts;  int main(int argc, char *argv[]) { qapplication a(argc, argv);  // create chart qlineseries *series = new qlineseries(); series->append(0,0); series->append(1,1); qchart *chart = new qchart(); chart->addseries(series); chart->createdefaultaxes(); chart->axisx()->settitletext(qstring("x [m]")); chart->axisy()->settitletext(qstring("y [m]")); chart->settitle("simple chart example"); chart->resize(500,500);  // paint chart image qimage img(500,500,qimage::format_rgb32); qpainter painter(&img); qchartview *chartview = new qchartview(chart); chartview->setrenderhint(qpainter::antialiasing); chartview->show(); chartview->render(&painter);  // set pdf writer qstring filename = "myfile.pdf"; qpdfwriter writer(filename); writer.setpagesize(qpagedpaintdevice::a4);  // create document qtextdocument doc; qtextcursor cursor(&doc); cursor.inserttext(qstring("some text\n")); cursor.insertimage(img); // print document doc.print(&writer);  return a.exec(); } 

although works, avoid converting chart image because messes image quality. there way it?

here workaround, if image quality matters : can use qpainter directly on textdocument. requires more work , adjustement, quality not lost.

int main(int argc, char *argv[]) {     qapplication a(argc, argv);       // create chart     qlineseries *series = new qlineseries();     series->append(0,0);     series->append(1,1);     qchart *chart = new qchart();     chart->addseries(series);     chart->createdefaultaxes();     chart->axisx()->settitletext(qstring("x [m]"));     chart->axisy()->settitletext(qstring("y [m]"));     chart->settitle("simple chart example");     chart->resize(500,500);      qchartview *chartview = new qchartview(chart);     chartview->setrenderhint(qpainter::textantialiasing);     chartview->show();      // set pdf writer     qstring filename = "myfile.pdf";     qpdfwriter writer(filename);     writer.setpagesize(qpagedpaintdevice::a4);      // create document     qtextdocument doc;      qpainter painter(&writer);     qfont font = painter.font();     font.setpixelsize(200);     painter.setfont(font);      painter.drawtext(qpoint(700,100),"some text");     chartview->render(&painter);      doc.drawcontents(&painter);     return a.exec(); }