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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5065

    文章

    18998

    浏览量

    302658
  • C++
    C++
    +关注

    关注

    22

    文章

    2104

    浏览量

    73470
  • Qt
    Qt
    +关注

    关注

    1

    文章

    301

    浏览量

    37808
  • 静态显示
    +关注

    关注

    0

    文章

    19

    浏览量

    5982
收藏 人收藏

    评论

    相关推荐

    编写第一QT程序

    学习一种编程语言或编程环境,通常会先编写一“Hello World”程序。我们也用 Qt Creator 编写一“Hello World”程序,以初步了解 Qt Creator 设
    发表于 11-21 10:41 1003次阅读

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

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

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

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

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

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

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

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

    TouchGFX静态曲线

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

    C++静态分析中对泛型构件的识别与表示方法

    本文从C++静态分析的角度出发,介绍了模板和泛型构件技术、一C++静态分析器实现中对模板和基本泛型构件的分析和识别方法、以及一种基于UML
    发表于 08-17 11:16 14次下载

    C/C++源代码静态监测设计实现

    为了检测出C/C++源代码程序中常见的运行时错误,设计了一静态检测系统。该系统通过词法分析、语法分析、语义分析来获取程序的语法树。然后系统的检测程序将会分析语法树的每
    发表于 06-21 15:06 44次下载
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>源代码<b class='flag-5'>静态</b>监测设计实现

    C++的动态多态和静态多态

    多态是 C++ 中面向对象技术的核心机制之一包含静态多态和动态多态它们之间有一定的相似性但是应用范围不同该文论述了这种相似性并重点论述了以模板实现的静态多态的应用范围
    发表于 06-29 15:41 41次下载
    <b class='flag-5'>C++</b>的动态多态和<b class='flag-5'>静态</b>多态

    跨平台C++图形用户界面应用程序QT4中文教程手册

    跨平台C++图形用户界面应用程序QT4中文教程手册
    发表于 08-29 14:22 0次下载

    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

    C++ GUI Qt4编程(第二版)配套源代码汇总

    C++ GUI Qt4编程(第二版)配套源代码汇总
    发表于 08-03 16:39 0次下载

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

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

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

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

    在嵌入式系统中集成Rust和Qt的实践

    Rust 拥有丰富的库生态系统,用于序列化和反序列化、异步操作、解析不安全输入、线程、静态分析等,而 Qt 是一 C++ 工具包,支持跨各种平台的丰富的、基于 GUI 的应用程序,从
    发表于 05-03 10:26 1677次阅读
    在嵌入式系统中集成Rust和<b class='flag-5'>Qt</b>的实践