当前位置: 首页 > news >正文

3、QtCharts 动态曲线图

文章目录

  • 效果
  • 声明变量
  • 构建静态图表
  • 创建计时器连接信号与槽
  • 槽函数核心代码

效果

请添加图片描述

声明变量

在这里插入图片描述

构建静态图表

   //构建曲线系列m_splineSerise=new QSplineSeries(this);//为折线添加数据qreal x=0.f;for (size_t i=0;i<c_MaxSize;i++){x=qreal(i+1)/c_MaxSize;m_splineSerise->append(i,getData(x));}//构建图标对象m_chart=new QChart();//注意:先添加到图表再创建坐标轴,否则无效//1.将折线系列添加到图表m_chart->addSeries(m_splineSerise);//构建坐标轴m_axisX = new QValueAxis();m_axisX->setRange(0,c_MaxSize);m_axisX->setTitleText(QStringLiteral("X"));//设置标题m_axisX->setLabelFormat("%g");//设置格式m_axisX->setTickCount(5);//设置刻度数m_axisY= new QValueAxis();m_axisY->setRange(-10,10);m_axisY->setTitleText(QStringLiteral("Y"));//将坐标轴绑定m_chart->setAxisX(m_axisX,m_splineSerise);m_chart->setAxisY(m_axisY,m_splineSerise);//隐藏图例m_chart->legend()->hide();//设置图标主题m_chart->setTheme(QtCharts::QChart::ChartThemeBlueCerulean);//设置标题m_chart->setTitle(QString("图表1"));//设置尺寸m_chart->setGeometry(0,0,500,300);//构建场景m_pScene =new QGraphicsScene(this);//为视图构建场景ui->graphicsView->setScene(m_pScene);//将图表添加到场景m_pScene->addItem(m_chart);//设置抗锯齿ui->graphicsView->setRenderHint(QPainter::Antialiasing,true);

创建计时器连接信号与槽

  	//构造定时器m_timer=new QTimer(this);m_timer->setInterval(100);//设置定时器间隔//绑定定时器connect(m_timer,&QTimer::timeout,this,&Dialog::slot_timer);m_timer->start();

槽函数核心代码

qreal Dialog::getData(qreal x)
{return qSin(x*2*M_PI)*7;
}void Dialog::slot_timer()
{//首先用一个静态对象存储启动时间static QTime tmBegin=QTime::currentTime();//将tmBegin流失的时间存到变量quint64 tmEllapsed=tmBegin.elapsed();quint64 nSkip=tmEllapsed-m_tmLast;//计时器两次定时中断(超时)之间的时间差QVector<QPointF> ptsOld = m_splineSerise->pointsVector();QVector<QPointF> ptsNew;//跟新后的数据//将后面的数据向前平移qint64 i=0;for(i=0;i<(ptsOld.count()-nSkip);i++){//将后面的数据平移到开头ptsNew.append(QPointF(i,ptsOld[nSkip+i].y()));}qreal x=0.f;//补充新数据for(i=ptsOld.count()-nSkip;i<ptsOld.count();i++){x=qreal(m_tmLast+i+1)/c_MaxSize;//将后面的数据平移到开头ptsNew.append(QPointF(i,getData(x)));}//更新系列m_splineSerise->replace(ptsNew);//更新上次进入定时器的时间m_tmLast=tmEllapsed;
}

在这里插入图片描述

http://www.lryc.cn/news/208716.html

相关文章:

  • Linux下自动挂载U盘或者USB移动硬盘
  • 一文通透位置编码:从标准位置编码到旋转位置编码RoPE
  • 八皇后问题
  • UE4/UE5 设置widget中text的字体Outline
  • 漏洞复现-phpmyadmin_SQL注入 (CVE-2020-5504)
  • 安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境
  • vue表格列表导出excel
  • CSS基础入门03
  • 大数据架构设计理论与实践
  • 2024级199管理类联考之英语二2200核心词汇(第三天)
  • SQL中:语法总结(group by,having ,distinct,top,order by,like等等)
  • 13.计算机视觉
  • 关于Java中的运算符
  • 细说RTSP、RTMP和GB28181区别
  • Windows下安装Anaconda、Pycharm以及iflycode插件图解
  • Steger算法实现结构光光条中心提取(python版本)
  • 【完整解题】2023年第四届MathorCup高校数学建模挑战赛——大数据竞赛B题 思路代码文章电商零售商家需求预测及库存优化问题
  • 服务网络基础
  • 2016年亚太杯APMCM数学建模大赛C题影视评价与定制求解全过程文档及程序
  • Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (四)
  • YOLOv7优化:渐近特征金字塔网络(AFPN)| 助力小目标检测
  • J2EE项目部署与发布(Windows版本)
  • 使用AWS Lambda函数的最佳实践!
  • 【计算机毕设小程序案例】基于SpringBoot的小演员招募小程序
  • 老年少女测试媛入职感想
  • StreamSaver.js入门教程:优雅解决前端下载文件的难题
  • element-ui vue2 iframe 嵌入外链新解
  • win10 + VS2017 编译libjpeg(jpeg-9b)
  • 如何实现公网远程桌面访问Ubuntu?VNC+cpolar内网穿透!
  • SpringMvc接收参数