问题
我正在使用Qt LineChart,这个QLineChart可以在CPU渲染时加载和删除数据,没有问题。但是,在使用setUseOpenGL(true)时,QChart removeSeries()不能正确更新我的QLineChart。已经删除的数据仍然可见于QChart。奇怪的是,当鼠标悬停于QChart上时,QChart会被更新并且数据被删除。
期望结果
调用removeSeries()后更新QChart。
观察结果
QChart没有被更新。
尝试过的解决方法
- 调用ChartView的repaint() -- 没有效果
- 发射自定义的QEvent以模拟鼠标悬停在QChart上 -- 没有效果
- 将包含QChartView的Widget设置为FullViewportUpdate -- 没有效果
我已经想不到更多的解决方法了,欢迎提出所有建议。相关代码:
QLineSeries *series3= data->getScanLineSeries();
series3->setUseOpenGL(true);
if(data->getLineSeriesOnChart() == false)
...
{
chart->addSeries(series3);
data->setLineSeriesOnChart(true);
std::cout << "Series added to chart.";
qDebug() << QString("Series added to chart");
}
else
{
chart->removeSeries(series3);
data->setLineSeriesOnChart(false);
qDebug() << QString("ERROR: this series was already on the chart, removing QLineSeries");
return chart;
}
...
(axes handling)
return chart;
chartView->resize(chartView->size() + QSize(1, 1)); chartView->resize(chartView->size() - QSize(1, 1));
,我会继续寻找更好的解决方案。 - eyllanesc