当前位置: 代码迷 >> 综合 >> 项目记录 - Qt QCustomPlot 实时动态数据曲线图,以时间为X轴,数据为Y轴(一)
  详细解决方案

项目记录 - Qt QCustomPlot 实时动态数据曲线图,以时间为X轴,数据为Y轴(一)

热度:83   发布时间:2023-12-12 04:55:32.0

QCustomPlot的基础参考此作者的文章

https://blog.csdn.net/qq_40194498/article/details/79666903

 

关于QCustomPlot的坑

  • 在pro文件中加入,如果没有加入printsupport,编译将会报错!
    QT += printsupport
  • 可重载源文件函数,实现更多功能

 

项目要求:

  • 以时间为X轴,不断更新
  • Y轴为数据
  • 可选择显示的数据
  • 数据观测,可暂停滚动,Y轴区间变化
  • Qt5.9.3 + QCustomPlot,QWidget项目

效果图:

做了一个小Demo,还在测试中,之后新加的功能再上传

 

源码连接:

https://download.csdn.net/download/qq_38159549/12288853

 

关于QCustomPlot绘图

1、通过addGraph即可添加一个曲线图层,此函数返回这个曲线图层的指针,或者通过曲线索引来找到,所有添加的曲线都放置在一个list里面,如果是第一个添加的,那么索引就是0了,

customPlot->graph(0)

2、使用setName和name函数分别设置和获取曲线的名字

添加完曲线即可对这个曲线设置数据,QCustomPlot用于绘制趋势图非常方便

直接使用函数setData即可设置数据

void setData(QCPDataMap*data, bool copy=false)
void setData (const QVector<double > &key, const QVector<double > &value)

只要有个x,y等长度的vector数据即可轻松绘图

也可以追加数据

void addData (const QCPDataMap&dataMap)
void addData (const QCPData&data)
void addData (double key,double value)
void addData (const QVector<double > &keys, const QVector<double >&values)

 

3、设置完数据后可以对x,y轴进行设置

customPlot->xAxis->setLabel("x");
customPlot->yAxis->setLabel("y");

或者设置x,y轴的范围

customPlot->xAxis->setRange(-1,1);
customPlot->yAxis->setRange(0,1);

QCustomPlot::rescaleAxes()函数,它会自动设置最合适的显示范围,非常简便。

设置完成后即可显示图像

使用QCustomPlot::replot函数使图像进行重绘,show函数也会触发重绘事件。