0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Qt(C++)使用QChart静态显示3个设备的温度变化曲线

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-05-29 14:47 次阅读

一、QChart介绍

QChart模块是Qt Charts库的基础,提供了用于创建和显示各种类型图表的类和接口。Qt Charts库是一个功能丰富、易于使用的数据可视化工具库,可以帮助开发者在应用程序中添加漂亮而又交互性强的图表。

QChart模块主要包括以下类:

  1. QChart:表示一个基本的图表容器,它可以包含一个或多个QAbstractSeries对象。开发者可以设置图表的标题、动画效果、背景、边框以及坐标轴等属性,并添加或移除序列数据。
  2. QAbstractSeries:表示一个序列数据,它是QLineSeries、QScatterSeries等具体序列类型的基类,开发者可以通过继承该类来创建自定义序列类型。
  3. QLineSeries:表示一条折线序列,它可以用于绘制单一或多条折线曲线图。
  4. QScatterSeries:表示一个散点图序列,它可以用于绘制数据点之间的离散分布情况。
  5. QBarSeries:表示一个条形图序列,它可以用于展示分类数据在不同类别中的分布情况。
  6. QPercentBarSeries:表示一个百分比条形图序列,它可以用于展示分类数据在不同类别中的占比情况。
  7. QPieSeries:表示一个饼图序列,它可以用于展示不同数据之间的占比关系。
  8. QChartView:表示QChart对象的视图类,开发者可以将QChart对象设置为QChartView的子对象,并添加到窗口中以便显示。

通过使用QChart模块,开发者可以轻松地创建并自定义各种类型的图表,例如折线曲线图、散点图、条形图、饼图等,并以交互性强的方式来展示数据,为应用程序增加了更多的可视化效果。

下面是通过折线图显示3个设备的温度变化趋势效果:

image-20230529133220218

image-20230529132333629

二、实现代码(1)

以下是使用QChart显示3个折线图,表示3个设备的温度曲线的实现代码: (温度数据是模拟的数据)

#include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 ​
 QT_CHARTS_USE_NAMESPACE
 ​
 class MainWindow : public QMainWindow
 {
     Q_OBJECT
 ​
 public:
     MainWindow(QWidget *parent = nullptr)
         : QMainWindow(parent)
     {
         // 数据初始化
         for (int i = 0; i < 30; i++) {
             m_data[0].append(QPointF(i, QRandomGenerator::global()->bounded(10, 30)));
             m_data[1].append(QPointF(i, QRandomGenerator::global()->bounded(20, 40)));
             m_data[2].append(QPointF(i, QRandomGenerator::global()->bounded(30, 50)));
         }
 ​
         // 创建线性图对象
         QChart* chart = new QChart();
         chart->setTitle("Temperature Data");
         chart->setAnimationOptions(QChart::SeriesAnimations);
 ​
         // 创建线序列对象
         QLineSeries* series1 = new QLineSeries(chart);
         QLineSeries* series2 = new QLineSeries(chart);
         QLineSeries* series3 = new QLineSeries(chart);
 ​
         // 设置线颜色、名字和宽度
         series1->setColor(Qt::red);
         series1->setName("Device1");
         series1->setPen(QPen(Qt::red, 2));
 ​
         series2->setColor(Qt::green);
         series2->setName("Device2");
         series2->setPen(QPen(Qt::green, 2));
 ​
         series3->setColor(Qt::blue);
         series3->setName("Device3");
         series3->setPen(QPen(Qt::blue, 2));
 ​
         // 添加数据到线序列对象
         for (const QPointF& point : m_data[0]) {
             *series1 << point;
         }
         for (const QPointF& point : m_data[1]) {
             *series2 << point;
         }
         for (const QPointF& point : m_data[2]) {
             *series3 << point;
         }
 ​
         // 添加线序列对象到图表
         chart->addSeries(series1);
         chart->addSeries(series2);
         chart->addSeries(series3);
 ​
         // 设置横轴和纵轴标签
         QValueAxis* axisX = new QValueAxis();
         axisX->setTitleText("Time (s)");
         axisX->setRange(0, 29);
 ​
         QValueAxis* axisY = new QValueAxis();
         axisY->setTitleText("Temperature (℃)");
         axisY->setRange(0, 60);
 ​
         // 添加横轴和纵轴到图表
         chart->setAxisX(axisX);
         chart->setAxisY(axisY);
 ​
         // 创建图表视图
         QChartView* chartView = new QChartView(chart);
         chartView->setRenderHint(QPainter::Antialiasing);
         setCentralWidget(chartView);
     }
 ​
 private:
     // 存储温度数据的二维数组
     QVector

以上是一个完整的Qt窗口程序,可以直接运行并显示3个设备的温度曲线。

在程序中,使用QChart对象作为图表容器,创建了3个QLineSeries对象用于展示3个设备的温度数据,并将它们添加到QChart对象中。自定义了横轴和纵轴标签及范围,并将它们添加到QChart对象中。最后,创建了一个QChartView对象,并将QChart对象设置为其子对象,以展示整个温度曲线图表。

三、实现代码(2)

如果自己需要设计UI界面,添加QChart显示折线图。下面演示一下过程。

【1】添加模块

image-20230529133646300

【2】设计UI

image-20230529133814592

【3】设计代码-头文件

#ifndef WIDGET_H
 #define WIDGET_H#include // 包含line chart需要的头文件
 #include 
 #include 
 #include 
 #include 
 #include 
 #include // 引用命名空间
 QT_CHARTS_USE_NAMESPACE
 ​
 QT_BEGIN_NAMESPACE
 namespace Ui { class Widget; }
 QT_END_NAMESPACE
 ​
 class Widget : public QWidget
 {
     Q_OBJECT
 ​
 public:
     Widget(QWidget *parent = nullptr);
     ~Widget();
 ​
 private:
     Ui::Widget *ui;
 ​
      QChart *chart;
      QChartView *chartView;
 };
 #endif // WIDGET_H

【3】设计代码-源文件

#include "widget.h"
 #include "ui_widget.h"
 ​
 Widget::Widget(QWidget *parent)
     : QWidget(parent)
     , ui(new Ui::Widget)
 {
     ui->setupUi(this);
 ​
     // 存储温度数据的二维数组
     QVector
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5017

    文章

    18501

    浏览量

    293337
  • C++
    C++
    +关注

    关注

    21

    文章

    2070

    浏览量

    73041
  • Qt
    Qt
    +关注

    关注

    1

    文章

    299

    浏览量

    37466
  • 静态显示
    +关注

    关注

    0

    文章

    19

    浏览量

    5967
收藏 人收藏

    评论

    相关推荐

    Qt(C++)使用QChart动态显示3个设备温度变化曲线

    QtQChart是一个用于绘制图表和可视化数据的类。提供了一个灵活的、可扩展的、跨平台的图表绘制解决方案,可以用于各种应用程序,如数据分析、科学计算、金融交易等。
    的头像 发表于 06-02 09:06 1066次阅读
    <b class='flag-5'>Qt</b>(<b class='flag-5'>C++</b>)使用<b class='flag-5'>QChart</b>动态<b class='flag-5'>显示</b>3个<b class='flag-5'>设备</b>的<b class='flag-5'>温度</b><b class='flag-5'>变化</b><b class='flag-5'>曲线</b>

    急!!LCD屏实现温度实时数据曲线显示

    STC89C58RD+OCM12864-2用的是12864显示屏,x轴(128)表示第几个数据,y轴(64)表示温度值,即每屏显示128
    发表于 09-03 15:52

    实时温度曲线显示小型恒温箱的装置

    。另一方面,温度调节周期较长,达到稳定温度需要一段时间。例如专利201020275530.4装置复杂,成本较高,而且没有温度曲线实时显示功能,不能直观观察加热过程中箱内
    发表于 11-15 16:20

    实时显示的程序图形中显示不出随横轴数值变化曲线怎么弄?

    做一产生温度并通过图形实时显示的程序,程序在附件中,要求横轴显示分钟计时范围是0-200分钟,纵轴显示产生的
    发表于 07-07 10:00

    C++能用来做什么?

    了资料,Linux的应用开发有QT、安卓等。而我选择了QT。而QT又是使用C++的,所以我就开始学习了C++。学习了一段时间的
    发表于 08-13 08:00

    Qt Creator如何创建纯C++项目?

    Qt Creator如何创建纯C++项目
    发表于 11-09 08:54

    温度变化静态工作点的影响相关资料推荐

    晶体管是一温度敏感器件,当温度变化时,其特性参数(β、ICBO、UBE)的变化比较显著,实验表明:温度
    发表于 05-25 06:37

    如何使用C++实现简单的QT界面开发

    (socket、sqlite3、cgic)-》工程管理-》arm和单片机(裸机开发的技能)-》系统移植-》驱动开发-》硬件-》一些开发工具*/熟练掌握Linux下的C语言编程会使用C++实现简单的
    发表于 12-27 06:41

    QT编译发生C++错误是什么问题

    (401.83 KB, 下载次数: 15)下载附件前边编译成功(454.93 KB, 下载次数: 18)下载附件QT编译发生C++错误麻烦看一下,是什么问题?
    发表于 01-04 07:16

    QT编译发生C++错误是什么原因?

    前边编译成功QT编译发生C++错误麻烦看一下,是什么问题?
    发表于 01-13 07:29

    TouchGFX静态曲线

    自动生成一默认的,但由于是C++,封装在了基类中,子类不能直接修改基类中的数据。所以,要在子类中再重新添加自己的数据,方法如下:这个函数,可以放在Screen3View.cpp中的构造函数内。
    发表于 10-01 20:29

    Qt5 C++ GUI Programming Cookbook

    Qt5 C++ GUI Programming Cookbook
    发表于 10-23 16:38 22次下载
    <b class='flag-5'>Qt</b>5 <b class='flag-5'>C++</b> GUI Programming Cookbook

    理想无铅回流焊温度曲线的组成和变化情况分析

    标准无铅回流焊温度曲线,反映了回流焊锡膏合金在整个回流焊接过程中PCB上某一点的温度随时间变化曲线,它直观反映出该点在整个焊接过程中的温度
    的头像 发表于 07-08 17:55 8838次阅读
    理想无铅回流焊<b class='flag-5'>温度曲线</b>的组成和<b class='flag-5'>变化</b>情况分析

    qtC++写的2048小游戏源代码

    qtC++写的2048小游戏源代码
    发表于 09-27 11:48 0次下载

    基于QT5+OpenCV+OpenVINO C++的应用打包过程

    我用QT C++写了一个YOLOv5模型推理演示应用。
    的头像 发表于 01-26 10:17 565次阅读
    基于<b class='flag-5'>QT</b>5+OpenCV+OpenVINO <b class='flag-5'>C++</b>的应用打包过程