【发布时间】:2018-01-07 17:27:02
【问题描述】:
我正在尝试创建一个可以绘制大型数据集的应用程序(因此使用 OpenGL 对我来说很重要)。我使用QChartView、QChart 和QLineSeries。对于QLineSeries,我也打开了openGL。但是当我试图将图表保存为图像时,我得到的绘图没有数据。我知道当QLineSeries 使用openGL 时,它会在图表绘图区域顶部创建一个QOpenGLWidget,但我不知道如何访问它。
那么问题来了:如何将图表保存为带有画线的图像?
一些图片:
我想要什么(不使用 openGL 绘图):
我得到了什么(用 openGL 绘图):
下面是代码示例:
MainWindow 构造函数:
chartView = new QChartView(generate_sin_chart(), ui->centralWidget);
ui->centralWidget->layout()->addWidget(chartView);
generate_sin_chart():
QLineSeries *series = new QLineSeries();
series->setUseOpenGL(true); //this line cause a problem
constexpr double PI = 3.14159265359;
for(int i = 0; i < 100; ++i)
{
double temp = i*PI/6;
series->append(temp, sin(temp));
}
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");
return chart;
保存功能:
QString filename = QFileDialog::getSaveFileName(this, tr("Save file"), "", tr("Images (*.png)"));
QPixmap p = chartView->grab();
p.save(filename, "PNG");
【问题讨论】: