QT-Qcustom之动态曲线(三)

一:绘图样式初始化函数PlotInit()
1、关于字体设置

 QFont font;
      font.setStyleStrategy(QFont::NoAntialias);//设置字体样式
      customPlot->xAxis->setTickLabelFont(font);//x轴字体设置
      customPlot->yAxis->setTickLabelFont(font);//y轴字体设置
      customPlot->legend->setFont(font);//图例字体设置

2、新建图层并设置图层曲线颜色
添加曲线一:

  	  customPlot->addGraph(); //新建图层
      customPlot->graph(0)->setPen(QPen(Qt::blue));//颜色设置:蓝色
      customPlot->graph(0)->setName("曲线1");//图例名称

添加曲线二:

	  customPlot->addGraph(); 
      customPlot->graph(1)->setPen(QPen(Qt::red));颜色设置:蓝色
      customPlot->graph(1)->setName("曲线二");

3、设置x坐标轴

	  customPlot->xAxis->setTickLabelType(QCPAxis::ltDateTime);//x轴坐标设定为时间
      customPlot->xAxis->setDateTimeFormat("hh:mm:ss");//设定x坐标的时间格式
      customPlot->xAxis->setAutoTickStep(false);//关闭自动轴间隔
      customPlot->xAxis->setTickStep(2);//设置轴间隔为2s
      customPlot->axisRect()->setupFullAxesBox();//显示方框
      customPlot->legend->setVisible(true);//显示图例

二、初始化完成后,将定时器与作图槽函数realTimePlot()连接,每次定时时间到则刷新作图即添加下面这段代码到自定义的绘图初始化函数PlotInit()末尾

 	  connect(&dataTimer, SIGNAL(timeout()), this, SLOT(realtimeDataSlot()));//连接定时器和作图函数,定时时间到则作一次图
      dataTimer.start(0); // 定时周期0s,尽快刷新作图

三、绘图函数realTimePlot()

void MainWindow::realtimeDataSlot()
{
  double key = QDateTime::currentDateTime().toMSecsSinceEpoch()/1000.0;//横坐标数据为时间
  qsrand(QTime::currentTime().msec() + QTime::currentTime().second() * 10000);//随机数种子
  double value0 = qrand() % 10;//产生随机数测试
  double value1 = qrand() % 5;
  customPlot->graph(0)->addData(key, value0);//添加数据1到曲线1
  customPlot->graph(1)->addData(key, value1);//添加数据2到曲线2
  connect(customPlot->xAxis, SIGNAL(rangeChanged(QCPRange)), customPlot->xAxis2, SLOT(setRange(QCPRange)));//x轴范围变化时启动槽函数setRange,以实现x轴左移
  customPlot->graph(0)->rescaleValueAxis(true);//y轴的范围自动调整,避免数据超出y轴
  customPlot->graph(1)->rescaleValueAxis(true);  
  customPlot->xAxis->setRange(key, 8, Qt::AlignRight);//设定x轴的范围为key到key+8,方式为右对齐
  customPlot->replot();//重绘
}

-----------------------------------工程文件配置------------------------------------

MainWindow.h
在这里插入图片描述**
MainWindow.cpp
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
UI界面
在这里插入图片描述
运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值