领卓教育: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更新数据。
QDateTime::currentDateTime().toMSecsSinceEpoch()/1000.0:
QDateTime::currentDateTime().toMSecsSinceEpoch():为获取当前时间戳,但是毫秒级的所有除以1000.
ui->pressure->graph(0)->addData(key,value):
向曲线中追加数据。
press.toDouble():
从数据库中读取
ui->pressure->replot():
二维图表的图像重汇。