问题
我使用的是Qt LineChart,这个QLineChart可以加载和删除数据,而不会出现在CPU呈现上的问题。但是,QChart removeSeries()在使用setUseOpenGL(true)时没有正确地更新QLineChart。删除的数据在QChart上仍然可见。奇怪的是,当鼠标悬停在QChart上时,QChart会被更新并删除数据。
预期结果
在调用QChart ()之后更新removeSeries。
观测结果
QChart没有更新。
我试过的
我没什么主意了。欢迎所有建议。相关守则:
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;发布于 2017-08-18 23:49:37
我已经检查了这个问题,现在我有了一个临时的解决方案,而且不是很优雅,它可能会起到促进作用,我注意到当您调整图表的大小时会更新图表,那么这是一个可以帮助您的代码:
chartView->resize(chartView->size() + QSize(1, 1));
chartView->resize(chartView->size() - QSize(1, 1));我会继续寻找更好的解决方案
示例:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLineSeries *series = new QLineSeries();
series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
*series << QPointF(11, 1) << QPointF(13, 3) << QPointF(17, 6) << QPointF(18, 3) << QPointF(20, 2);
series->setUseOpenGL(true);
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
QTimer timer;
QObject::connect(&timer, &QTimer::timeout, [chart, series, chartView](){
qDebug()<<chart->series();
if(!chart->series().isEmpty())
chart->removeSeries(series);
else
chart->addSeries(series);
chartView->resize(chartView->size()+QSize(1, 1));
chartView->resize(chartView->size()-QSize(1, 1));
});
timer.start(1000);
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
return a.exec();
}https://stackoverflow.com/questions/45765620
复制相似问题