QT:QML制作線形圖

目錄

一.介紹

二.引入庫

三.自定義屬性

四.懸停處理函數

五.設置X軸

六.設置Y軸

七.畫線

八.測試點坐標

九.設置值

十.效果演示

十一.代碼演示

1.LineGraph.qml

2.main.qml


一.介紹

線形圖(也稱為折線圖)是一種常用的數據可視化工具,主要用于展示數據隨時間或其他連續變量的變化趨勢。它的作用主要包括:

1.趨勢展示:線形圖能清晰地展示數據隨時間的變化,幫助觀察者理解數據隨時間的發展趨勢,如股票價格、氣溫變化、銷售量等。

2.比較分析:可以同時繪制多條線,便于比較不同類別或組別的數據變化,便于找出差異和相似之處。

3.趨勢預測:基于歷史數據,線形圖可以用于預測未來的趨勢,為決策提供依據。

4.數據解讀:通過觀察線的斜率和起伏,可以直觀地理解數據的增減速度以及波動的幅度。

5.易于理解:相比于散點圖或柱狀圖,線形圖更易于解讀,特別是對于連續的變化數據。

6.數據可視化:它是數據可視化中最基礎的圖表類型之一,對于初學者來說,學習和理解線形圖是入門其他復雜圖表的基礎。

二.引入庫

import QtCharts 2.1

QtCharts 是 Qt 提供的一個模塊,用于在應用程序中創建各種類型的圖表,如折線圖、柱狀圖、餅圖、散點圖等。通過引入這個模塊,開發者可以利用 QtCharts 提供的類和函數來設計和實現圖表功能,從而使得應用程序能夠以圖形化的方式展示數據。

具體來說,引入 QtCharts 2.1 后,你可以使用以下功能:

1.創建圖表:使用?QChart?類創建一個圖表對象,它是所有圖表類型的基類。

2.添加數據系列:使用不同的數據系列類(如?QLineSeriesQBarSeriesQPieSeries?等)向圖表中添加數據。

3.設置軸:使用?QValueAxisQCategoryAxis?等類來設置圖表的坐標軸。

4.定制圖表外觀:可以設置圖表的標題、圖例、背景、顏色、字體等屬性。

5.交互功能:為圖表添加交互功能,如縮放、平移、工具提示等。

6.顯示圖表:使用?QChartView?類將圖表顯示在應用程序的用戶界面中。

三.自定義屬性

自定義屬性,用于存儲圖表的配置信息,如 Y 軸的最小值和最大值、圖例的文本、線條的顏色和寬度等。

四.懸停處理函數

1.將傳入的顏色參數?_color?賦值給局部變量?m_color。這個顏色可能用于后續的繪圖或者文本顯示。

2.檢查?type?參數的值。如果?type?為?true,則執行以下操作:

(1)將?data?參數轉換為字符串,并保留兩位小數,然后將這個字符串賦值給?dataNameValue?組件的?text?屬性。
(2)將?dataNameValue?組件的?visible?屬性設置為?true,使其在界面上可見。

3.如果?type?為?false?或者不是?true,則將?dataNameValue?組件的?visible?屬性設置為?false,使其在界面上不可見。

五.設置X軸

  • min: minXaxis: 設置軸上顯示的最小值。

  • max: maxXaxis: 設置軸上顯示的最大值。

  • tickCount: 3: 在最小值和最大值之間設置了3個主要刻度線。

  • minorTickCount: 0: 沒有設置次要刻度線。

  • color: titleColor: 設置軸線的顏色為titleColor的值。

  • labelsColor: titleColor: 設置軸上刻度線的值的顏色為titleColor的值。

  • minorGridLineColor: titleColor: 設置次要網格線的顏色為titleColor的值。由于minorTickCount設置為0,因此不會顯示次要網格線。

  • titleVisible: true: 使軸標題可見。

  • titleBrush: titleColor: 設置用于軸標題的筆刷(顏色和樣式)為titleColor的值。

六.設置Y軸

  • min: m_min_Y_L: 設置軸上顯示的最小值。

  • max: m_max_Y_L: 設置軸上顯示的最大值。

  • labelsColor: lineSeries1.color: 設置軸上刻度線的值的顏色為lineSeries1組件的顏色。

  • color: titleColor: 設置軸線的顏色為titleColor的值。

  • titleText: m_sLegent1: 設置軸標題的文本為m_sLegent1的值。

  • titleVisible: true: 使軸標題可見。

  • titleBrush: lineSeries1.color: 設置用于軸標題的筆刷(顏色和樣式)為lineSeries1組件的顏色。

  • visible: m_bAxis1: 設置軸的可見性為m_bAxis1的值。

七.畫線

1.axisX: axisX: 設置該線系列沿axisX軸進行繪制,axisX可能是另一個已定義的ValueAxis

2.axisY: axisY_L: 設置該線系列沿axisY_L軸進行繪制,即沿之前定義的垂直軸。

3.width: m_seriesWidth1: 設置線的寬度為m_seriesWidth1的值,這通常是用來控制線的粗細,m_seriesWidth1需要在其他地方定義具體數值。

4.color: "green": 設置線的顏色為綠色。

5.onHovered: hoverShowText(state,point.y,lineSeries2.color): 當鼠標懸停在該線上的數據點時,調用名為hoverShowText的處理函數,傳遞當前的鼠標狀態(state),數據點的y值(point.y),以及線的顏色(lineSeries2.color)作為參數。這個函數可能在圖表組件的樣式表或JavaScript代碼中定義,用于顯示數據點的詳細信息或者改變線的樣式。

八.測試點坐標

九.設置值

十.效果演示

十一.代碼演示

1.LineGraph.qml

import QtQuick 2.3
import QtCharts 2.1
import QtQuick.Controls 2.0ChartView {id : myChartviewlegend.visible:falseanimationOptions: ChartView.NoAnimationantialiasing: truebackgroundColor: "#939393"titleColor: "#000000"property var m_min_Y_L: 0property var m_max_Y_L: 1property var m_sLegent1: qsTr("")property var m_color : "red"property var m_seriesWidth1: 3    //線寬property var m_line1Color : "blue"property bool m_bTitleVisible :falseproperty bool m_bAxis1 : trueproperty var objectLine1:lineSeries1property var objectLine2:lineSeries2property var objectLine3:lineSeries3property int maxXaxis : 300property int minXaxis : 0property var _valueL:0Component.onCompleted:{}function hoverShowText(type,data,_color){m_color = _color;if(type){dataNameValue.text = String(data.toFixed(2))dataNameValue.visible = true}elsedataNameValue.visible = false}ValueAxis{id:                 axisXmin:                minXaxismax:                maxXaxistickCount:          3minorTickCount:     0color:              titleColorlabelsColor:        titleColorminorGridLineColor: titleColortitleVisible:       truetitleBrush:         titleColor}ValueAxis{id:             axisY_Lmin:            m_min_Y_Lmax:            m_max_Y_LlabelsColor:   lineSeries1.colorcolor:          titleColortitleText:      m_sLegent1titleVisible:   truetitleBrush:     lineSeries1.colorvisible:        m_bAxis1}Label{id:            titleLabelLtext:          m_sLegent1color:         lineSeries1.coloranchors.left:   parent.leftanchors.leftMargin:   30anchors.top:        parent.topanchors.topMargin: 30horizontalAlignment:    Text.AlignLeftverticalAlignment:      Text.AlignVCenterwrapMode:               Text.WordWrapfont.pixelSize: 20}Label{id: _lab1visible: m_bTitleVisiblecolor:lineSeries1.coloranchors.top: parent.topanchors.topMargin: 30anchors.left: titleLabelL.rightanchors.leftMargin: 30text:_valueL.toFixed(2)font.pixelSize: 20}LineSeries {id: lineSeries1axisX: axisXaxisY: axisY_Lwidth: m_seriesWidth1color: m_line1ColoronHovered:hoverShowText(state,point.y,lineSeries1.color)}// 第二條線LineSeries {id: lineSeries2axisX: axisXaxisY: axisY_Lwidth: m_seriesWidth1 // 您可能需要為每條線設置不同的線寬color: "green" // 設置線的顏色onHovered: hoverShowText(state,point.y,lineSeries2.color) // 更新懸停處理函數}// 第三條線LineSeries {id: lineSeries3axisX: axisXaxisY: axisY_Lwidth: m_seriesWidth1 // 您可能需要為每條線設置不同的線寬color: "orange" // 設置線的顏色onHovered: hoverShowText(state, point.y, lineSeries3.color) // 更新懸停處理函數}Text {id: dataNameValuecolor: m_colorfont.pixelSize: 20visible: falsetext: qsTr("")x:parent.width/2y:10}
}

2.main.qml

   Component.onCompleted: {lineView.objectLine1.append(0,10)lineView.objectLine1.append(100,16)lineView.objectLine2.append(0,5)lineView.objectLine2.append(100,19)lineView.objectLine3.append(0,-10)lineView.objectLine3.append(100,14)lineView2.objectLine1.append(0,10)lineView2.objectLine1.append(100,16)lineView2.objectLine2.append(0,5)lineView2.objectLine2.append(100,19)lineView2.objectLine3.append(0,-10)lineView2.objectLine3.append(100,14)lineView3.objectLine1.append(0,10)lineView3.objectLine1.append(100,16)lineView3.objectLine2.append(0,5)lineView3.objectLine2.append(100,19)lineView3.objectLine3.append(0,-10)lineView3.objectLine3.append(100,14)}Rectangle{id:_lineRectanglewidth: 800height: 800anchors.right: parent.rightanchors.top: parent.topanchors.rightMargin: 30anchors.topMargin: 60visible: falseColumn{spacing: 30LineGraph{id: lineViewwidth: 800height: 250minXaxis: 0maxXaxis : 500m_min_Y_L: -20.0m_max_Y_L: 20.0}LineGraph{id: lineView2width: 800height: 250minXaxis: 0maxXaxis : 500m_min_Y_L: -20.0m_max_Y_L: 20.0}LineGraph{id: lineView3width: 800height: 250minXaxis: 0maxXaxis : 500m_min_Y_L: -20.0m_max_Y_L: 20.0}}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13420.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13420.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13420.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何找到MySQL中存儲引擎所對應的表空間并且打開?

在上節課我們學習了數據庫(MySQL)進階:存儲引擎,有不少同學產生疑惑,到底要怎么找到表空間并且打開啊?這節課我們就來探討。 首先,根據這個路徑:C:\ProgramData\MySQL\MySQL Server…

mybatis-plus如何使用QueryWrapper和LambdaQueryWrapper的and方法?

構造器去構造條件的時候,我們都知道eq方法去鏈式的時候是自動添加and的,那如果需要and的那個條件需要加括號呢? 環境 Jdk 1.8、mybatis-plus 3.5.3.2、mysql 5.7.11 示例 sql: select * from user where openid 1 and (phon…

谷歌Flank潛藏3年的Github Action供應鏈攻擊

01 簡 介 Flank [1] 是谷歌 Firebase Test lab 開源在 Github 的一個項目,用于同時對多個安卓和IOS設備進行測試。2024年4月15號 AWS 安全工程師 Adnan Khan 公布了關于該項目代碼倉庫 Github Action CI/CD 存在漏洞的細節[2],漏洞在2020年于此 代碼合…

通信網絡時鐘同步(PTP網絡授時服務器)技術探討

通信網絡時鐘同步(NTP網絡授時服務器)技術探討 通信網絡時鐘同步(NTP網絡授時服務器)技術探討 1、著移動通信業務的發展和移動用戶的快速增長, 移動網絡架構向IP化、寬帶化進展。為了適應業務IP化發展趨勢&#xff0c…

02 VUE學習:模板語法

模板語法 Vue 使用一種基于 HTML 的模板語法,使我們能夠聲明式地將其組件實例的數據綁定到呈現的 DOM 上。所有的 Vue 模板都是語法層面合法的 HTML,可以被符合規范的瀏覽器和 HTML 解析器解析。 在底層機制中,Vue 會將模板編譯成高度優化的…

開發vue3,真的可以不用ref/reactive了,也不需要ref.value

什么是Cabloy-Front? Cabloy-Front 是一款支持 IOC 容器的 Vue3 框架。不用ref/reactive,不用ref.value,不用pinia 與UI庫的配合 Cabloy-Front 可以搭配任何 UI 庫使用,并且內置了幾款 UI 庫的項目模版,便于開箱即用…

免費SSL證書簽發安裝指南

一、簽發 1.選擇證書頒發機構(CA):首先,你需要找到一個提供免費SSL證書的CA。有些CA會提供永久免費的SSL證書,而有些則可能只提供有限時間的試用證書,如JoySSL就提供永久免費證書。 2.生成CSR&#xff08…

WPF 鼠標拖拽平移

效果 xaml <ScrollViewer x:Name"scrollViewer" HorizontalScrollBarVisibility"Hidden" VerticalScrollBarVisibility"Disabled" Background"#FFF1ADAD"PreviewMouseDown"ScrollViewer_OnPreviewMouseDown"PreviewMou…

Electron學習筆記(一)

文章目錄 相關筆記筆記說明 一、輕松入門 1、搭建開發環境2、創建窗口界面3、調試主進程 二、主進程和渲染進程1、進程互訪2、渲染進程訪問主進程類型3、渲染進程訪問主進程自定義內容4、渲染進程向主進程發送消息5、主進程向渲染進程發送消息6、多個窗口的渲染進程接收主進程發…

白鯨開源CEO郭煒在2024 DataOps發展大會上獲聘專家

2024年5月15日&#xff0c;白鯨開源CEO郭煒在2024 DataOps發展大會上被正式聘任為DataOps專家&#xff0c;并獲得了榮譽證書。本次大會由中國通信標準化協會主辦&#xff0c;中關村科學城管委會提供支持&#xff0c;大數據技術標準推進委員會&#xff08;CCSATC601&#xff09;…

iisnginx環境一次奇怪的跨域問題解決經過

跨域問題描述&#xff1a; iis網站跨域、nginx 網站跨域 都已配置&#xff0c;訪問接口依然出現跨域問題。 錯誤提示&#xff1a; ccess to XMLHttpRequest at ‘https://xxx.com/gameapi/preserve/get/status’ from origin ‘https://cdn.xxx.com’ has been blocked by CO…

Python簡易信息管理系統

我們將通過一個實例來探討如何使用Python與MySQL數據庫進行交互&#xff0c;以構建一個簡單的學生信息管理系統。這個系統將能夠執行基本的CRUD&#xff08;創建(Create)、讀取(Retrieve)、更新(Update)、刪除(Delete)&#xff09;操作&#xff0c;以管理學生信息。我們將使用m…

Python爬蟲-批量爬取新能源汽車上牌量

前言 本文是該專欄的第27篇,后面會持續分享python爬蟲干貨知識,記得關注。 最近粉絲朋友咨詢新能源汽車上牌量數據的爬取方法,對此在本文中,筆者以某汽車平臺為例,通過python來實現對“新能源汽車上牌量”的數據進行抓取。 具體實現思路和詳細邏輯,筆者將在正文結合完整…

三豐云搭建QQ-bot的服務器-代碼實現(3)

網址&#xff1a;https://www.sanfengyun.com >> 三豐云免費云服務器 代碼實現 書接上回裝飾器&#xff0c;顯而易見&#xff0c;只有裝飾器還不完善&#xff0c;所以我們接著來補充代碼 首先定義一個 MyClient 類 class MyClient(botpy.Client):async def on_ready(…

Nacos :安裝配置、服務注冊

目錄 一、中文官網 二、配置 1、application.properties 2、啟動 Nacos 服務 3、訪問 Nacos 三、服務注冊 1、配置Nacos客戶端的pom依賴 2、添加服務配置信息 3、添加 Nacos 啟動注解 一、中文官網 Nacos官網 | Nacos 官方社區 | Nacos 下載 | Nacos 下載后直接解壓…

0X JavaSE-- ( 遍歷-- for each、Iterator 、)、

for each for each 語句是 JDK5 的新特征&#xff0c;主要用于遍歷數組、集合。 // collection 可以是數組/實現了 Iterable 接口的集合類 for(dataType variable : collection){ // 使用 item 進行操作 } // 遍歷二維數組// 初始化一個二維數組int[][] array {{1, 2, 3},{4…

GO語言核心30講 實戰與應用 (io包,bufio包,os包,網絡服務,http,性能分析)

原站地址&#xff1a;Go語言核心36講_Golang_Go語言-極客時間 一、io包中的接口和工具 1. strings.Builder、strings.Reader 和 bytes.Buffer 這些類型實現了 io 包的很多接口&#xff0c;目的是什么&#xff1f; 是為了提高不同程序實體之間的互操作性。 程序實體是指比如網…

瀏覽器插件Video Speed Controller(視頻倍速播放),與網頁自身快捷鍵沖突/重復/疊加的解決辦法

瀏覽器插件Video Speed Controller&#xff08;視頻倍速播放&#xff09;&#xff0c;與網站自身快捷鍵沖突/重復/疊加的解決辦法 插件介紹問題曾今嘗試的辦法今日發現插件列表中打開Video Speed Controller的設置設置頁面翻到下面&#xff0c;打開實驗性功能。將需要屏蔽的原網…

網絡工程師----第三十一天

DNS&#xff1a; DNS含義&#xff1a;DNS 是 Domain Name System&#xff08;域名解析系統&#xff09; 端口號&#xff1a;DNS為53&#xff08;UDP&#xff09; 域名的層次結構&#xff1a; 域名的分級&#xff1a; 域名服務器&#xff1a; 域名解析過程&#xff1a; 遞歸查…

PHP xdebug

使用場景 一臺MAC上安裝了phpstorm&#xff0c;虛擬機安裝了對應的web程序&#xff0c;需要調試。 坑點&#xff0c;網上教程太多&#xff0c;不如看官網&#xff0c;需要按照xdebug版本來配置php.ini https://www.jetbrains.com/help/phpstorm/2023.3/configuring-xdebug.htm…