Qt QHorizontalStackedBarSeries詳解

1、概述

QHorizontalStackedBarSeries 是 Qt Charts 模塊中的一個類,用于創建水平堆疊條形圖。它繼承自 QAbstractBarSeries 類,允許將多個數據系列堆疊在一起顯示,每個條形由多個部分組成,這些部分共同構成一個完整的條形,適合展示整體與部分的關系數據。

水平堆疊條形圖中,類別沿垂直軸排列,值沿水平軸顯示,每個類別的條形由多個數據系列的數值疊加而成,便于比較不同類別之間的總量以及各組成部分的占比。

2、重要方法

  • QHorizontalStackedBarSeries(QObject *parent = nullptr):構造函數,創建一個水平堆疊條形圖系列對象。
  • void append(QAbstractBarSet *set):向系列中添加一個數據組(QBarSet)。
  • void remove(QAbstractBarSet *set):從系列中移除指定的數據組。
  • QList<QAbstractBarSet *> barSets() const:返回系列中所有的數據組列表。
  • void setBarWidth(qreal width):設置條形的寬度,范圍通常在 0.0 到 1.0 之間(相對于類別間隔)。
  • qreal barWidth() const:獲取當前條形的寬度。
  • void setLabelsVisible(bool visible):設置是否顯示數據標簽。
  • bool labelsVisible() const:判斷數據標簽是否可見。
  • void setLabelsPosition(QAbstractBarSeries::LabelsPosition position):設置數據標簽的位置(如標簽在條形內部或外部)。
  • QAbstractBarSeries::LabelsPosition labelsPosition() const:獲取數據標簽的位置。

3、信號

QHorizontalStackedBarSeries 繼承了 QAbstractBarSeries 的信號,主要包括:

  • void clicked(int index, QAbstractBarSet *barset):當用戶點擊某個數據組的條形時觸發,參數為類別索引和被點擊的數據組。
  • void hovered(bool status, int index, QAbstractBarSet *barset):當鼠標懸停在條形上或離開時觸發,status 表示是否懸停,index 為類別索引,barset 為對應的數據組。
  • void pressed(int index, QAbstractBarSet *barset):當鼠標按下條形時觸發。
  • void released(int index, QAbstractBarSet *barset):當鼠標釋放條形時觸發。
  • void doubleClicked(int index, QAbstractBarSet *barset):當雙擊條形時觸發。

4、常用枚舉

QHorizontalStackedBarSeries 主要使用父類 QAbstractBarSeries 中的枚舉:

  • QAbstractBarSeries::LabelsPosition:定義數據標簽的位置
    • LabelsCenter:標簽位于條形中心
    • LabelsInsideEnd:標簽位于條形內部的末端
    • LabelsInsideBase:標簽位于條形內部的基部
    • LabelsOutsideEnd:標簽位于條形外部的末端

5、C++ 實例

#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QAreaSeries>
#include <QLegend>
#include <QHCandlestickModelMapper>QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);// 創建數據組QBarSet *set1 = new QBarSet("產品A");QBarSet *set2 = new QBarSet("產品B");QBarSet *set3 = new QBarSet("產品C");// 為數據組添加數據*set1 << 1 << 2 << 3 << 4 << 5 << 6;*set2 << 5 << 4 << 3 << 2 << 1 << 0;*set3 << 3 << 3 << 3 << 3 << 3 << 3;// 創建水平堆疊條形系列并添加數據組QHorizontalStackedBarSeries *series = new QHorizontalStackedBarSeries();series->append(set1);series->append(set2);series->append(set3);// 設置條形寬度series->setBarWidth(0.6);// 顯示數據標簽series->setLabelsVisible(true);series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);// 創建圖表并添加系列QChart *chart = new QChart();chart->addSeries(series);chart->setTitle("各地區產品銷售分布");chart->setAnimationOptions(QChart::SeriesAnimations);// 定義類別軸(垂直軸)QStringList categories;categories << "華東" << "華北" << "華南" << "西北" << "西南" << "東北";QBarCategoryAxis *axisY = new QBarCategoryAxis();axisY->append(categories);chart->addAxis(axisY, Qt::AlignLeft);series->attachAxis(axisY);// 定義數值軸(水平軸)QValueAxis *axisX = new QValueAxis();axisX->setRange(0, 15);axisX->setTitleText("銷售額 (萬元)");chart->addAxis(axisX, Qt::AlignBottom);series->attachAxis(axisX);// 創建圖表視圖并顯示QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);QMainWindow window;window.setCentralWidget(chartView);window.resize(800, 600);window.show();return a.exec();
}

點擊掃碼加入群聊

覺得有幫助的話,打賞一下唄。。

? ? ? ? ? ?

需要商務合作(定制程序)的歡迎私信!!?

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

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

相關文章

《股票智能查詢與投資決策輔助應用項目方案》

前引&#xff1a;本股票智能查詢與投資決策輔助應用通過整合多源金融數據&#xff0c;運用量化分析 機器學習技術&#xff0c;為普通投資者提供全方位股票信息服務和個性化投資建議。系統不僅解決了傳統工具 “數據分散、分析復雜” 的問題&#xff0c;更通過人性化交互和直觀…

從零開始構建Kubernetes Operator:一個完整的深度學習訓練任務管理方案

從零開始構建Kubernetes Operator&#xff1a;一個完整的深度學習訓練任務管理方案一、引言二、為什么需要Operator&#xff1f;1. Controller vs Operator&#xff1a;本質區別2. 有狀態服務 vs 無狀態服務的挑戰三、項目架構設計3.1整體架構圖3.2核心組件4.核心實現解析1. CR…

第二十二篇|新世界語學院教育數據深度解析:學制函數、能力矩陣與升學圖譜

第二十二篇&#xff5c;新世界語學院教育數據深度解析&#xff1a;學制函數、能力矩陣與升學圖譜 系列主題&#xff1a;500所日本語言學校結構數據工程 關鍵詞&#xff1a;新世界語學院、東京新宿、學制函數建模、JLPT能力矩陣、升學網絡、教育數據工程 一、合規與法人建模&…

Java開發工具選擇指南:Eclipse、NetBeans與IntelliJ IDEA對比

在Java開發的世界里&#xff0c;選擇合適的開發工具就如同挑選一把稱手的禪杖&#xff0c;能助你在代碼修行的路上更加得心應手。本文將為Java開發者提供一份實用的IDE選擇指南&#xff0c;從功能、適用人群、性能等方面深入解析幾款主流的Java開發工具&#xff0c;幫助你找到最…

iOS App 內存泄漏與性能調優實戰 如何排查內存問題、優化CPU與GPU性能、降低耗電并提升流暢度(uni-app iOS開發優化指南)

在 iOS 應用開發中&#xff0c;內存泄漏 是最常見且最難排查的性能問題之一。 它會導致應用 運行越來越卡、占用內存過高、頻繁崩潰&#xff0c;甚至嚴重消耗電池。 尤其在 uni-app 跨平臺開發 中&#xff0c;JS 層和原生層的混合調用更容易隱藏內存問題&#xff1a; 對象未釋放…

從源代碼開始構建、部署和管理應用程序

1.創建項目目錄并準備應用程序的代碼及其依賴1.創建項目目錄&#xff0c;并將當前目錄切換到該目錄[roothost1 ~]# mkdir python-web && cd python-web2.創建 app.py 文件并添加以下代碼[roothost1 python-web]# vi app.py [roothost1 python-web]# cat app.py import …

Flutter-[2]第一個應用

摘要 根據官方文檔搭配好環境&#xff0c;使用vscode創建完應用后&#xff0c;會遇到以下問題 設備無法選擇打開了lib\main.dart右上角也沒有運行按鈕 環境 Windows11Flutter 3.35.4 必要設置 1. 查看是否開啟Windows桌面應用開發flutter config --list輸出如下: All Settings:…

QListWidget選擇阻止問題解決方案

QListWidget選擇阻止問題解決方案QListWidget選擇阻止問題解決方案問題背景QListWidget工作機制詳解1. 事件處理流程2. 關鍵機制說明2.1 鼠標事件與信號的分離2.2 信號阻塞的局限性2.3 斷開連接方法的問題問題的根本原因1. 異步事件處理2. 多層狀態管理3. 事件優先級解決方案演…

TCL華星計劃投建第8.6代印刷OLED產線

近日&#xff0c;TCL科技集團股份有限公司&#xff08;000100.SZ&#xff09;發布公告&#xff0c;公司、旗下子公司TCL華星與廣州市人民政府、廣州經濟技術開發區管理委員會共同簽署項目合作協議&#xff0c;擬共同出資于廣州市建設一條月加工2290mm2620mm玻璃基板能力約2.25萬…

MATLAB 時間序列小波周期分析

1. 文件結構 WaveletPeriod/ ├── main_wavelet_period.m % 一鍵運行 ├── wavelet_power_spectrum.m % 小波功率譜 顯著性 ├── period_peak_detect.m % 自動周期峰值 ├── plot_wavelet_results.m % 時頻圖 周期圖 └── example/└── temp.csv …

如何精準配置儲

當電費賬單變身利潤引擎&#xff0c;您的企業是否做好了準備&#xff1f;鷓鴣云儲能仿真軟件&#xff0c;不止于仿真——我們以智能算法為核心&#xff0c;為企業定制“高收益、高適配、可持續”的儲能配置方案&#xff0c;將用電數據轉化為新一輪增長動能。智慧大腦&#xff1…

Uniapp崩潰監控體系構建:內存泄漏三維定位法(堆棧/資源/線程)

在Uniapp開發中&#xff0c;內存泄漏是導致應用崩潰的核心隱患。通過堆棧分析、資源追蹤和線程監控三維定位法&#xff0c;可系統化定位泄漏源。以下是完整實施方案&#xff1a;一、堆棧維度&#xff1a;泄漏對象溯源內存快照比對使用Chrome DevTools定期獲取內存快照&#xff…

NLP中Subword算法:WordPiece、BPE、BBPE、SentencePiece詳解以及代碼實現

本文將介紹以下內容&#xff1a; 1. Subword與傳統tokenization技術的對比2. WordPiece3. Byte Pair Encoding (BPE)4. Byte-level BPE(BBPE)5. SentencePiece 以及各Subword算法代碼實現 一、Subword與傳統tokenization技術的對比 1. 傳統tokenization技術 傳統tokenizatio…

十一章 無界面壓測

一、采用無界面壓測的原因1.節約系統資源。 2.更快捷&#xff0c;只需要啟動命令即可進行壓測 3.主要是用于性能壓測集成.無界面壓測命令參數&#xff1a; -n 表示無界面壓測 -t 制定你的 jmx 腳本 -l 生成 jtl 測試報告二、注意配置文件設置:輸出為xml jmeter.save.s…

從零實現 Qiankun 微前端:基座應用控制子應用路由與信息交互

隨著前端業務的快速發展,單體應用模式(Monolith)越來越難以支撐復雜業務場景。微前端(Micro Frontends)應運而生,它將大型應用拆解成多個子應用(Micro App),通過主應用進行統一調度和集成。 在微前端技術棧中,Qiankun(乾坤)是一個廣泛使用的解決方案,基于 single…

在業務應用中集成 go-commons,實現應用+系統雙指標監控

在日常 Go 服務開發中&#xff0c;我們通常需要同時監控 業務指標&#xff08;比如 QPS、請求延遲、錯誤率&#xff09;&#xff0c;也需要關注 系統指標&#xff08;CPU、內存、磁盤占用情況&#xff09;。 過去這類場景通常要引入多個庫&#xff1a;一個負責業務指標采集&…

容器化部署番外篇之docker網絡通信06

一、四種網絡模式 Bridge模式&#xff1a;容器的默認網關&#xff0c;默認新建容器的網絡模式Host模式&#xff1a;容器和宿主機共用一個 Network&#xff0c;使用主機的IP:PORT就可以訪問容器&#xff0c;但安全性不高&#xff0c;用得少Container模式&#xff1a;這個模式指定…

Linux 線程的概念

序言&#xff1a; 在這篇博客中我們將講解線程的概念&#xff0c;如何理解線程&#xff0c;線程和進程的區別&#xff0c;線程的優缺點等&#xff0c;我相信你看完這篇博客后會以別樣的視角重新理解線程&#xff0c;下面的內容全部是基于Linux操作系統的。 一、線程的概念 1…

vscode 中通義靈碼顯示登錄過期

本文主要分享&#xff1a;vscode 中通義靈碼顯示登錄過期的解決辦法。vscode 中的小插件通義靈碼&#xff0c;用的好好的&#xff0c;突然提示&#xff1a;登錄過期&#xff0c;嘗試訪問網頁版阿里云&#xff0c;登錄后&#xff0c;關閉 vscode 重新打開&#xff0c;通義靈碼還…

ESP32C3-MINI-1開發板踩坑記錄

某東買了一個ESP32C3-MINI-1開發板&#xff0c;名字跟ESP官網的很像&#xff0c;想著應該差不多的&#xff0c;價格便宜17塊&#xff0c;而官網的就貴了60還不包郵&#xff0c;買來才發現是巨坑。 看結論&#xff0c;直接到最后&#xff0c;前面都是我的踩坑過程。第一塊板子發…