首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTextDocument中的QChart

QTextDocument中的QChart
EN

Stack Overflow用户
提问于 2016-06-07 05:46:31
回答 1查看 1.2K关注 0票数 3

我想生成一个包含文本和QChart的pdf报告。我目前使用QTextDocument并将图表作为图像添加到其中,然后使用QPdfWriter导出为pdf。

代码语言:javascript
复制
#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 a 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 the chart into an 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 up pdf writer
QString filename = "myfile.pdf";
QPdfWriter writer(filename);
writer.setPageSize(QPagedPaintDevice::A4);

// Create the document
QTextDocument doc;
QTextCursor cursor(&doc);
cursor.insertText(QString("some text\n"));
cursor.insertImage(img);
// Print the document
doc.print(&writer);

return a.exec();
}

虽然它可以工作,但我希望避免将图表转换为图像,因为它会弄乱图像质量。有办法做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-06 17:17:09

如果图像质量真的很重要,这里有一个解决方法:您可以直接在TextDocument上使用QPainter。它需要更多的工作和调整,但质量不会下降。

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    // Create a 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 up pdf writer
    QString filename = "myfile.pdf";
    QPdfWriter writer(filename);
    writer.setPageSize(QPagedPaintDevice::A4);

    // Create the 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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37667373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档