【发布时间】:2017-08-18 22:08:13
【问题描述】:
问题
我正在使用 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));,我会继续寻找更好的解决方案。 -
非常感谢,这确实解决了问题!