衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Qt(C++)使用QChart靜態(tài)顯示3個(gè)設(shè)備的溫度變化曲線

DS小龍哥-嵌入式技術(shù) ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-05-29 14:47 ? 次閱讀

一、QChart介紹

QChart模塊是Qt Charts庫(kù)的基礎(chǔ),提供了用于創(chuàng)建和顯示各種類(lèi)型圖表的類(lèi)和接口。Qt Charts庫(kù)是一個(gè)功能豐富、易于使用的數(shù)據(jù)可視化工具庫(kù),可以幫助開(kāi)發(fā)者在應(yīng)用程序中添加漂亮而又交互性強(qiáng)的圖表。

QChart模塊主要包括以下類(lèi):

  1. QChart:表示一個(gè)基本的圖表容器,它可以包含一個(gè)或多個(gè)QAbstractSeries對(duì)象。開(kāi)發(fā)者可以設(shè)置圖表的標(biāo)題、動(dòng)畫(huà)效果、背景、邊框以及坐標(biāo)軸等屬性,并添加或移除序列數(shù)據(jù)。
  2. QAbstractSeries:表示一個(gè)序列數(shù)據(jù),它是QLineSeries、QScatterSeries等具體序列類(lèi)型的基類(lèi),開(kāi)發(fā)者可以通過(guò)繼承該類(lèi)來(lái)創(chuàng)建自定義序列類(lèi)型。
  3. QLineSeries:表示一條折線序列,它可以用于繪制單一或多條折線曲線圖。
  4. QScatterSeries:表示一個(gè)散點(diǎn)圖序列,它可以用于繪制數(shù)據(jù)點(diǎn)之間的離散分布情況。
  5. QBarSeries:表示一個(gè)條形圖序列,它可以用于展示分類(lèi)數(shù)據(jù)在不同類(lèi)別中的分布情況。
  6. QPercentBarSeries:表示一個(gè)百分比條形圖序列,它可以用于展示分類(lèi)數(shù)據(jù)在不同類(lèi)別中的占比情況。
  7. QPieSeries:表示一個(gè)餅圖序列,它可以用于展示不同數(shù)據(jù)之間的占比關(guān)系。
  8. QChartView:表示QChart對(duì)象的視圖類(lèi),開(kāi)發(fā)者可以將QChart對(duì)象設(shè)置為QChartView的子對(duì)象,并添加到窗口中以便顯示。

通過(guò)使用QChart模塊,開(kāi)發(fā)者可以輕松地創(chuàng)建并自定義各種類(lèi)型的圖表,例如折線曲線圖、散點(diǎn)圖、條形圖、餅圖等,并以交互性強(qiáng)的方式來(lái)展示數(shù)據(jù),為應(yīng)用程序增加了更多的可視化效果。

下面是通過(guò)折線圖顯示3個(gè)設(shè)備的溫度變化趨勢(shì)效果:

image-20230529133220218

image-20230529132333629

二、實(shí)現(xiàn)代碼(1)

以下是使用QChart顯示3個(gè)折線圖,表示3個(gè)設(shè)備的溫度曲線的實(shí)現(xiàn)代碼: (溫度數(shù)據(jù)是模擬的數(shù)據(jù))

#include 
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
 ?
 QT_CHARTS_USE_NAMESPACE
 ?
 class MainWindow : public QMainWindow
 {
     Q_OBJECT
 ?
 public:
     MainWindow(QWidget *parent = nullptr)
         : QMainWindow(parent)
     {
         // 數(shù)據(jù)初始化
         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)));
         }
 ?
         // 創(chuàng)建線性圖對(duì)象
         QChart* chart = new QChart();
         chart->setTitle("Temperature Data");
         chart->setAnimationOptions(QChart::SeriesAnimations);
 ?
         // 創(chuàng)建線序列對(duì)象
         QLineSeries* series1 = new QLineSeries(chart);
         QLineSeries* series2 = new QLineSeries(chart);
         QLineSeries* series3 = new QLineSeries(chart);
 ?
         // 設(shè)置線顏色、名字和寬度
         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));
 ?
         // 添加數(shù)據(jù)到線序列對(duì)象
         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;
         }
 ?
         // 添加線序列對(duì)象到圖表
         chart->addSeries(series1);
         chart->addSeries(series2);
         chart->addSeries(series3);
 ?
         // 設(shè)置橫軸和縱軸標(biāo)簽
         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);
 ?
         // 創(chuàng)建圖表視圖
         QChartView* chartView = new QChartView(chart);
         chartView->setRenderHint(QPainter::Antialiasing);
         setCentralWidget(chartView);
     }
 ?
 private:
     // 存儲(chǔ)溫度數(shù)據(jù)的二維數(shù)組
     QVector

以上是一個(gè)完整的Qt窗口程序,可以直接運(yùn)行并顯示3個(gè)設(shè)備的溫度曲線。

在程序中,使用QChart對(duì)象作為圖表容器,創(chuàng)建了3個(gè)QLineSeries對(duì)象用于展示3個(gè)設(shè)備的溫度數(shù)據(jù),并將它們添加到QChart對(duì)象中。自定義了橫軸和縱軸標(biāo)簽及范圍,并將它們添加到QChart對(duì)象中。最后,創(chuàng)建了一個(gè)QChartView對(duì)象,并將QChart對(duì)象設(shè)置為其子對(duì)象,以展示整個(gè)溫度曲線圖表。

三、實(shí)現(xiàn)代碼(2)

如果自己需要設(shè)計(jì)UI界面,添加QChart顯示折線圖。下面演示一下過(guò)程。

【1】添加模塊

image-20230529133646300

【2】設(shè)計(jì)UI

image-20230529133814592

【3】設(shè)計(jì)代碼-頭文件

#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】設(shè)計(jì)代碼-源文件

#include "widget.h"
 #include "ui_widget.h"
 ?
 Widget::Widget(QWidget *parent)
     : QWidget(parent)
     , ui(new Ui::Widget)
 {
     ui->setupUi(this);
 ?
     // 存儲(chǔ)溫度數(shù)據(jù)的二維數(shù)組
     QVector
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5094

    文章

    19178

    瀏覽量

    307730
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73859
  • Qt
    Qt
    +關(guān)注

    關(guān)注

    1

    文章

    308

    瀏覽量

    38071
  • 靜態(tài)顯示
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    6045
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    編寫(xiě)第一個(gè)QT程序

    學(xué)習(xí)一種編程語(yǔ)言或編程環(huán)境,通常會(huì)先編寫(xiě)一個(gè)“Hello World”程序。我們也用 Qt Creator 編寫(xiě)一個(gè)“Hello World”程序,以初步了解 Qt Creator 設(shè)
    發(fā)表于 11-21 10:41 ?1057次閱讀

    Qt(C++)使用QChart動(dòng)態(tài)顯示3個(gè)設(shè)備溫度變化曲線

    QtQChart是一個(gè)用于繪制圖表和可視化數(shù)據(jù)的類(lèi)。提供了一個(gè)靈活的、可擴(kuò)展的、跨平臺(tái)的圖表繪制解決方案,可以用于各種應(yīng)用程序,如數(shù)據(jù)分析、科學(xué)計(jì)算、金融交易等。
    的頭像 發(fā)表于 06-02 09:06 ?1739次閱讀
    <b class='flag-5'>Qt</b>(<b class='flag-5'>C++</b>)使用<b class='flag-5'>QChart</b>動(dòng)態(tài)<b class='flag-5'>顯示</b><b class='flag-5'>3</b><b class='flag-5'>個(gè)</b><b class='flag-5'>設(shè)備</b>的<b class='flag-5'>溫度</b><b class='flag-5'>變化</b><b class='flag-5'>曲線</b>

    Qt Creator如何創(chuàng)建純C++項(xiàng)目?

    Qt Creator如何創(chuàng)建純C++項(xiàng)目
    發(fā)表于 11-09 08:54

    溫度變化對(duì)靜態(tài)工作點(diǎn)的影響相關(guān)資料推薦

    晶體管是一個(gè)溫度敏感器件,當(dāng)溫度變化時(shí),其特性參數(shù)(β、ICBO、UBE)的變化比較顯著,實(shí)驗(yàn)表明:溫度
    發(fā)表于 05-25 06:37

    QT編譯發(fā)生C++錯(cuò)誤是什么問(wèn)題

    (401.83 KB, 下載次數(shù): 15)下載附件前邊編譯成功(454.93 KB, 下載次數(shù): 18)下載附件QT編譯發(fā)生C++錯(cuò)誤麻煩看一下,是什么問(wèn)題?
    發(fā)表于 01-04 07:16

    TouchGFX靜態(tài)曲線

    自動(dòng)生成一個(gè)默認(rèn)的,但由于是C++,封裝在了基類(lèi)中,子類(lèi)不能直接修改基類(lèi)中的數(shù)據(jù)。所以,要在子類(lèi)中再重新添加自己的數(shù)據(jù),方法如下:這個(gè)函數(shù),可以放在Screen3View.cpp中的構(gòu)造函數(shù)內(nèi)。
    發(fā)表于 10-01 20:29

    C++靜態(tài)分析中對(duì)泛型構(gòu)件的識(shí)別與表示方法

    本文從C++靜態(tài)分析的角度出發(fā),介紹了模板和泛型構(gòu)件技術(shù)、一個(gè)C++靜態(tài)分析器實(shí)現(xiàn)中對(duì)模板和基本泛型構(gòu)件的分析和識(shí)別方法、以及一種基于UML
    發(fā)表于 08-17 11:16 ?14次下載

    C/C++源代碼靜態(tài)監(jiān)測(cè)設(shè)計(jì)實(shí)現(xiàn)

    為了檢測(cè)出C/C++源代碼程序中常見(jiàn)的運(yùn)行時(shí)錯(cuò)誤,設(shè)計(jì)了一個(gè)靜態(tài)檢測(cè)系統(tǒng)。該系統(tǒng)通過(guò)詞法分析、語(yǔ)法分析、語(yǔ)義分析來(lái)獲取程序的語(yǔ)法樹(shù)。然后系統(tǒng)的檢測(cè)程序?qū)?huì)分析語(yǔ)法樹(shù)的每
    發(fā)表于 06-21 15:06 ?44次下載
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>源代碼<b class='flag-5'>靜態(tài)</b>監(jiān)測(cè)設(shè)計(jì)實(shí)現(xiàn)

    C++的動(dòng)態(tài)多態(tài)和靜態(tài)多態(tài)

    多態(tài)是 C++ 中面向?qū)ο蠹夹g(shù)的核心機(jī)制之一包含靜態(tài)多態(tài)和動(dòng)態(tài)多態(tài)它們之間有一定的相似性但是應(yīng)用范圍不同該文論述了這種相似性并重點(diǎn)論述了以模板實(shí)現(xiàn)的靜態(tài)多態(tài)的應(yīng)用范圍
    發(fā)表于 06-29 15:41 ?41次下載
    <b class='flag-5'>C++</b>的動(dòng)態(tài)多態(tài)和<b class='flag-5'>靜態(tài)</b>多態(tài)

    跨平臺(tái)C++圖形用戶界面應(yīng)用程序QT4中文教程手冊(cè)

    跨平臺(tái)C++圖形用戶界面應(yīng)用程序QT4中文教程手冊(cè)
    發(fā)表于 08-29 14:22 ?0次下載

    Qt5 C++ GUI Programming Cookbook

    Qt5 C++ GUI Programming Cookbook
    發(fā)表于 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編程(第二版)配套源代碼匯總
    發(fā)表于 08-03 16:39 ?0次下載

    qtC++寫(xiě)的2048小游戲源代碼

    qtC++寫(xiě)的2048小游戲源代碼
    發(fā)表于 09-27 11:48 ?3次下載

    基于QT5+OpenCV+OpenVINO C++的應(yīng)用打包過(guò)程

    我用QT C++寫(xiě)了一個(gè)YOLOv5模型推理演示應(yīng)用。
    的頭像 發(fā)表于 01-26 10:17 ?1458次閱讀
    基于<b class='flag-5'>QT</b>5+OpenCV+OpenVINO <b class='flag-5'>C++</b>的應(yīng)用打包過(guò)程

    在嵌入式系統(tǒng)中集成Rust和Qt的實(shí)踐

    Rust 擁有豐富的庫(kù)生態(tài)系統(tǒng),用于序列化和反序列化、異步操作、解析不安全輸入、線程、靜態(tài)分析等,而 Qt 是一個(gè) C++ 工具包,支持跨各種平臺(tái)的豐富的、基于 GUI 的應(yīng)用程序,從
    發(fā)表于 05-03 10:26 ?1890次閱讀
    在嵌入式系統(tǒng)中集成Rust和<b class='flag-5'>Qt</b>的實(shí)踐
    百家乐从哪而来| 大发888优惠红利代码| 678百家乐博彩娱乐场| 百家乐免费下| 二八杠分析仪| 上游棋牌官网| 沙龙国际娱乐网站| 百家乐官网玩法百科| 大发888真钱电玩游戏| 永利国际| 扶风县| 百家乐官网娱乐城会员| 百家乐官网喜牛| 皇冠百家乐客户端皇冠| 威尼斯人娱乐城真实网址| 百家乐怎样赢| 百家乐官网六手变化混合赢家打法 | 广州百家乐官网桌子| 百家乐龙虎斗扎金花| 富田太阳城二手房| 黔东| 百家乐官网在线娱乐网| 皇室百家乐娱乐城| 大发888下载 17| 百家乐官网下注稳赢法| 中原百家乐官网的玩法技巧和规则| 百家乐赌场占多大概率| 大发888游戏平台 送1666元礼金领取lrm| 百家乐官网桌颜色可定制| 百家乐靠什么赢| 威尼斯人娱乐平台开户| 澳门百家乐官网开户投注| 百家乐浴盆博彩通排名| 网上最好赌博网站| 大世界百家乐官网赌场娱乐网规则 | 长乐坊百家乐娱乐城| 皇冠网小说微博| Bet百家乐官网娱乐城| 威尼斯人娱乐城存取款| 百家乐官网节目视频| 澳门百家乐心得玩博|