领卓教育:QT坐标曲线图

最近做一个项目,串口间的通信,为了更客观地显示传感器传递的信息,我查找了一些QT坐标曲线图的制作方法,现在写下来和大家分享一下。

领卓教育:QT坐标曲线图

customPlot->addGraph():

QCustomPlot是一个二维图表(在CSDN中有一篇专门的介绍);addGraph():这个方法执行一次就添加一条曲线。综合起来为向坐标内添加曲线。

customPlot->graph(0)—>setPen(QPen(Qt::blue)):

graph(x):x为第几次添加的曲线的下标; painter.setPen(QPen(Qt::black, 5, Qt::DashDotLine, Qt::RoundCap)):第一个参数是画笔颜色,第二个参数是画笔的粗细;第三个是画笔样式;第四个是RoundCap,也就是圆形笔帽。在上个参数中我们只使用了画笔颜色:green. 总体含义为:将第1个添加的曲线变为绿色。

customPlot->graph(0)->setName(“湿度”):

setName与setPen含义相同都是向二维图表中添加,setName添加的是曲线名称。

QSharedPointer timeTicker(new QCPAxisTickerDateTime):

创建坐标轴样式为时间格式;

timeTicker->setDateTimeFormat(“hh:mm:ss”):

设置时间坐标轴 显示的时间的格式“hh:mm:ss”为时分秒结构。

customPlot->xAxis->setLabel(“time”);

customPlot->yAxis->setLabel(“Humidity/%RH”):

xAxis代表的是x轴,yAxis代表的是y轴,setLabel则向相应轴添加标签并写入内容(及添加轴名称)。

customPlot->yAxis->setRange(100,-50):

设置y轴的范围,setRange(x,y) 是设置区间的方法,x为坐标起始,y为坐标终止。

customPlot->axisRect()->setupFullAxesBox(true):

作用为显示所有的坐标轴。

connect(&dataTimer,SIGNAL(timeout()),this,SLOT(realtimeDataSlot_pressure()));

dataTimer.start(1000):

这两行为定义一段时间dataTimer.start(1000))(1秒)开发板发送一次数据执行realtimeDataSlot_pressure更新数据。
领卓教育:QT坐标曲线图

QDateTime::currentDateTime().toMSecsSinceEpoch()/1000.0:

QDateTime::currentDateTime().toMSecsSinceEpoch():为获取当前时间戳,但是毫秒级的所有除以1000.

ui->pressure->graph(0)->addData(key,value):

向曲线中追加数据。

press.toDouble():

从数据库中读取

ui->pressure->replot():

二维图表的图像重汇。

领卓教育:QT坐标曲线图