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

2023-05-29 17:25:53 来源:DS小龙哥-嵌入式技术 分享到:


【资料图】

一、QChart介绍

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

QChart模块主要包括以下类:

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

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

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

二、实现代码(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】添加模块

【2】设计UI

【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
标签:

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

来源:DS小龙哥-嵌入式技术 2023-05-29 17:25:53

李尚福将出席第20届香格里拉对话会并访问新加坡

来源:国防部发布 2023-05-29 16:01:38

借一次银行卡“净赚”5000元?男子坐飞机去广州“跑分”被抓 环球百事通

来源:宜昌网警巡查执法 2023-05-29 15:38:33

ST八菱(002592)5月29日14点13分触及跌停板 焦点热闻

来源:证券之星 2023-05-29 14:39:34

Redmi Note 12T Pro官宣:LCD屏+天玑8200-Ultra 今日热讯

来源:中关村在线 2023-05-29 13:52:48

中国代表在第76届世卫大会就福岛核污染水排海问题进行批驳|世界资讯

来源:人民网-国际频道 2023-05-29 13:16:25

海峡两岸(平潭)铁人三项公开赛举行

来源:新华网 2023-05-29 12:06:35

铁锅炖大鹅怎么做最好吃呢?能和铁锅炖大鹅搭配的菜有哪些?

来源:巴中在线 2023-05-29 11:22:43

苹果供应商纬创计划全面撤出印度市场 环球通讯

来源:DoNews快讯 2023-05-29 10:56:22

负数减正数怎么算呢_负数减正数怎么算|当前简讯

来源:互联网 2023-05-29 10:00:47

语重心长的意思解释及造句 语重心长的意思-天天快播

来源:城市网 2023-05-29 09:11:12

下沉一线寻破题 把主题教育与民生工作结合起来 杭州住保房管局推进主题教育走深走实

来源:杭州网 2023-05-29 08:51:00

【天天热闻】尤文CFO:扣分处罚是完全错误的 寻找新总监时阿莱格里没有否决权

来源:直播吧 2023-05-29 07:47:55

【全球播资讯】【服务】小米贴膜活动调整 米金券每年限1次 限时间使用

来源:白问 2023-05-29 06:26:02

守护甜心之Together|焦点精选

来源:互联网 2023-05-29 05:35:59

放水里的富贵竹怎么养的 富贵竹怎么水养|热资讯

来源:伊秀经验网 2023-05-29 04:03:07

谢朗字长度的读音_谢朗

来源:互联网 2023-05-29 02:31:56

老是放响屁但是不臭是怎么回事_老放响屁但是不臭是怎么回事 视焦点讯

来源:互联网 2023-05-29 01:05:47

【环球热闻】dw手表编号查询真伪(dw手表编号查询)

来源:车百科 2023-05-28 23:01:21

陕西特产好吃的 陕西特产有哪些吃的 全球快看点

来源:元宇宙网 2023-05-28 21:45:59

阿里P9下岗再就业-环球滚动

来源:程序员客栈 2023-05-28 20:53:40

市场赚钱效应开始复苏(5.28复盘私语)

来源:多赢财富网 2023-05-28 19:52:14

首批受邀乘坐国产大飞机C919是怎样的体验?|全球新动态

来源:看看新闻 2023-05-28 18:25:11

环球最资讯丨行业追踪|纺织服装市场(5月22日-5月28日):棉花期货价格环比略有下跌

来源:同花顺iNews 2023-05-28 17:38:52

全党必须树立什么是历史创造者的历史唯物主义观点(全党必须牢固树立()是历史创造者的历史唯物主义观点) 环球热消息

来源:互联网 2023-05-28 16:30:05

今日播报!视频 | 骄傲转发!C919冲上云霄壮观一幕

来源:央视新闻 2023-05-28 15:48:14

天天热门:巴雷拉谈国米:我们经历了一个起伏不定的赛季 现在我感觉很好

来源:球天下 2023-05-28 14:43:51

得了甲状腺癌能活多久_腺癌能活多久-全球速看

来源:互联网 2023-05-28 14:04:46

收货人地址_收货人地址英语-当前速看

来源:互联网 2023-05-28 12:58:42

世界即时看!隋朝疆域图为什么有2个都城_隋朝疆域图

来源:互联网 2023-05-28 11:50:28

Copyright   2015-2022 西南知识产权网 版权所有  备案号:皖ICP备2022009963号-8   联系邮箱:39 60 29 14 2@qq.com