QCustomPlot动态绘制图线,删除之前数据
今天做项目,需要动态更新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的博客-CSDN博客_qcustomplot 大量数据
用QCustomPlot画x轴单位是时间且实时变化的动态图_漫慢求知路的博客-CSDN博客_qcustomplot随时间变化
关于qcustomplot好的文章收集:
QCustomplot使用分享(一) 能做什么事 - 朝十晚八 - 博客园 (cnblogs.com)
Qt5--QcustomPlot使用实时动态显示总结_liefyuan的博客-CSDN博客_qcustomplot 时间轴
QT之qcustomplot的setData()和addData()的区别_七 六 伍的博客-CSDN博客_qcustomplot setdata
分类:
QCustomPlot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理