Qt5 QCustomPlot。实时大图

Posted

技术标签:

【中文标题】Qt5 QCustomPlot。实时大图【英文标题】:Qt5 QCustomPlot. Large graph in real time 【发布时间】:2015-12-09 13:00:07 【问题描述】:

我目前正在开发一个实时绘制来自 ADC 的数据的应用程序。在某些情况下,我必须绘制大约 150k 点,这需要一些时间。 所以问题是数据到达的频率可能比我绘制它的频率高。

我不需要高帧率。我也可以努力跳过一些数据。

我正在使用:操作系统 Windows 7、Qt 5.5、QCustomPlot。

所以问题是:在之前的重新绘制完成之前,我究竟如何防止重新绘制以保持应用程序响应?

谢谢。

【问题讨论】:

【参考方案1】:

您可以有一个插槽,它只接收新到达的数据并将它们存储在像QVector 这样的数据结构中,并使用QTimer 以特定间隔定期使用接收到的数据更新绘图。

所以接收数据的槽是这样的:

void receiveData(QVector<double> data)

     receivedData.append(data);

而与定时器的timeOut信号以一定间隔连接的槽是这样的:

void receiveData()

     plot->graph()->setData(keyVector, receivedData);
     plot->replot();

这样,绘图仅在特定时间间隔内更新,与输入数据的速率无关。

【讨论】:

以上是关于Qt5 QCustomPlot。实时大图的主要内容,如果未能解决你的问题,请参考以下文章

Qt编写自定义控件25-自定义QCustomPlot

QT应用编程: 使用qcustomplot显示动态曲线设计心电图显示页面

QT应用编程: 使用qcustomplot显示动态曲线设计心电图显示页面

如何在线程中更新 QCustomPlot 数据?

QCustomplot基本使用

QCustomplot基本使用