欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

QCustomPlot 可动态绘制线条,删除以前的数据

最编程 2024-05-05 12:01:02
...

今天做项目,需要动态更新QCustomPlot对象上的线,删除之前线上的数据。看了一篇博客(下面链接第二篇)发现有一个QCPGraph类有一个removeDataBefore()的方法,但是我的qcustomplot库文件没有这个函数,于是参考下面第一篇博客,自定义了removeDataBefore()函数。具体步骤如下:

1、因为我的qcustomplot版本是2.0.1,QCPGraph类里没有这个函数,在qcustomplot.h的QCPGraph类体里声明removeDataBefore()函数。

2、在qcustomplot.cpp里定义这个函数

关于这个函数里面的removeBefore涉及一些源代码没有看懂,如果有看懂的大佬欢迎在评论区留言指教。

 3、给graph对象添加值

void MainWindow::updateQCPGraph(QCustomPlot *&CP, const QStringList &xdata, const QStringList &datas)
{
    double key = 0;
    if( !xdata.isEmpty() )
    {
        QDateTime datetime = QDateTime::fromString(xdata.at(0),"yyyy.MM.dd hh:mm:ss.zzz");//转换类型
         key = (double)datetime.toMSecsSinceEpoch()/1000;//计算自1970-01-01T00:00:00以来的毫秒数
    }

    double value = 0;
    for(int j=0;j<CP->graphCount();++j)
    {
        //用addData方法更新曲线
        value = datas.at(j).toDouble();
        CP->graph(j)->addData(key , value);
        CP->graph(j)->removeDataBefore(key-18);//删除key之前xx秒的数据       
    }
}

 只保留18秒以内的数据

参考: 【Qt】解决QCustomPlot实时绘图时数据不断累积的问题_漫游宇宙sky的博客-****博客_qcustomplot 大量数据

 用QCustomPlot画x轴单位是时间且实时变化的动态图_漫慢求知路的博客-****博客_qcustomplot随时间变化

关于qcustomplot好的文章收集:

QCustomplot使用分享(一) 能做什么事 - 朝十晚八 - 博客园 (cnblogs.com)

原文地址:https://www.cnblogs.com/littleheadache/p/16871216.html

推荐阅读