3

大規模なデータセットをプロットできるアプリケーションを作成しようとしています (したがって、OpenGl の使用は私にとって重要です)。QChartViewQChartおよびを使用しQLineSeriesます。また、QLineSeriesopenGLの使用をオンにします。しかし、チャートを画像として保存しようとすると、データのないプロットが表示されます。QLineSeriesopenGL を使用すると、チャート プロット エリアの上に が作成されることはわかってQOpenGLWidgetいますが、それにアクセスする方法がわかりません。

質問は次のとおりです。グラフを線を引いた画像として保存する方法は?

いくつかの画像:

私が欲しいもの(openGLを使わずにプロット):

openGL を使用せずにプロットする

私が得るもの(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");
4

2 に答える 2

0

まったく同じ問題に遭遇しました。QChart のアニメーションを無効にすることで解決できます。

于 2020-08-25T12:54:22.087 に答える