当前位置: 首页 > news >正文

Qt QStackedBarSeries详解

1、概述

QStackedBarSeries 是 Qt Charts 模块中用于创建堆叠柱状图的类,它继承自 QAbstractBarSeries。堆叠柱状图将多个数据系列叠加显示在同一柱状图中,便于直观展示整体数据以及各组成部分的占比关系。

QStackedBarSeries 可以包含多个 QBarSet 对象,每个 QBarSet 代表一组数据,这些数据会在图表中堆叠显示。与普通柱状图(QBarSeries)不同,堆叠柱状图的每个类别只显示一个柱子,该柱子的高度是同一类别中所有 QBarSet 数据的总和。

2、重要方法

  • QStackedBarSeries(QObject *parent = nullptr):构造函数,创建一个堆叠柱状图系列
  • void append(QBarSet *set):添加一个 QBarSet 到系列中
  • void remove(QBarSet *set):从系列中移除指定的 QBarSet
  • QList<QBarSet *> barSets() const:返回系列中所有的 QBarSet 对象
  • void clear():清除系列中所有的 QBarSet
  • QAbstractAxis *axisX() const:返回 X 轴
  • QAbstractAxis *axisY() const:返回 Y 轴
  • void setAxisX(QAbstractAxis *axis):设置 X 轴
  • void setAxisY(QAbstractAxis *axis):设置 Y 轴
  • void attachAxis(QAbstractAxis *axis):将系列附加到指定轴
  • void detachAxis(QAbstractAxis *axis):将系列与指定轴分离
  • QString name() const:返回系列名称
  • void setName(const QString &name):设置系列名称

3、信号

  • void barsetsAdded(const QList<QBarSet *> &sets):当添加一个或多个 QBarSet 时发射
  • void barsetsRemoved(const QList<QBarSet *> &sets):当移除一个或多个 QBarSet 时发射
  • void clicked(int index, QBarSet *barset):当点击某个 QBarSet 的数据项时发射,index 是数据项索引
  • void hovered(bool status, int index, QBarSet *barset):当鼠标悬停在数据项上或离开时发射
  • void pressed(int index, QBarSet *barset):当按下数据项时发射
  • void released(int index, QBarSet *barset):当释放数据项时发射
  • void doubleClicked(int index, QBarSet *barset):当双击数据项时发射

4、常用枚举

QStackedBarSeries 本身没有定义枚举,但它继承自 QAbstractBarSeries,常用的枚举有:

  • QAbstractBarSeries::LabelsPosition:标签位置枚举
    • QAbstractBarSeries::LabelsCenter:标签在柱形中心
    • QAbstractBarSeries::LabelsInsideEnd:标签在柱形内部顶端
    • QAbstractBarSeries::LabelsInsideBase:标签在柱形内部底端
    • QAbstractBarSeries::LabelsOutsideEnd:标签在柱形外部顶端

5、C++ 实例

#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QAreaSeries>
#include <QLegend>
#include <QPieSlice>QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建数据集合QBarSet *set0 = new QBarSet("产品A");QBarSet *set1 = new QBarSet("产品B");QBarSet *set2 = new QBarSet("产品C");// 为数据集合添加数据*set0 << 1 << 2 << 3 << 4 << 5 << 6;*set1 << 5 << 4 << 3 << 2 << 1 << 0;*set2 << 3 << 3 << 3 << 3 << 3 << 3;// 创建堆叠柱状图系列QStackedBarSeries *series = new QStackedBarSeries();series->append(set0);series->append(set1);series->append(set2);series->setName("季度销售数据");// 设置数据标签可见series->setLabelsVisible(true);series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);// 创建图表并添加系列QChart *chart = new QChart();chart->addSeries(series);chart->setTitle("各产品季度销售数据对比");chart->setAnimationOptions(QChart::SeriesAnimations);// 定义X轴类别QStringList categories;categories << "Q1" << "Q2" << "Q3" << "Q4" << "Q5" << "Q6";QBarCategoryAxis *axisX = new QBarCategoryAxis();axisX->append(categories);chart->addAxis(axisX, Qt::AlignBottom);series->attachAxis(axisX);// 创建Y轴QValueAxis *axisY = new QValueAxis();axisY->setRange(0, 15);axisY->setTitleText("销售额 (万元)");chart->addAxis(axisY, Qt::AlignLeft);series->attachAxis(axisY);// 创建图表视图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.dtcms.com/a/389277.html

相关文章:

  • WebSocket Secure(WSS)在Django项目中的使用
  • RocketMQ 部署;与Golang服务交互
  • 南京某高校校园外卖点餐系统_django
  • 类的基础语法(笔记补充)
  • pycharm 连git 传文件到GitHub
  • 11 简答题-伪码转为NS图 PAD图
  • Java 中如何利用 CAS 实现原子操作?以AtomicInteger 为例
  • Custom SRP - Point And Spot Shadows
  • 无障碍前端组件实践(上):基础交互组件与色彩无障碍
  • 矩阵的导数运算
  • 微算法科技(NASDAQ:MLGO)多注意力循环网络:MARN技术如何让机器理解语言、手势与语音的微妙交互
  • 混合架构(SpringCloud+Dubbo)的整合方案与适用场景(二)
  • centos的hadoop的允许hdfs命令覆盖linux系统目录文件或生成副本
  • 跨平台开发框架全景分析:Flutter、RN、KMM 与腾讯 Kuikly 谁更值得选择?
  • 燃料电池负载均衡测试:解锁高效供能密码
  • ip地址在哪里查看?怎样查询自己电脑ip?如何找到使用内网ip,判断看本地有无公网ip?内网ip怎么给外网访问?
  • 设计模式-模板方法模式详解
  • Red Hat 8.5.0-18 部署ceph文件系统
  • 将ceph文件存储挂载给k8s使用
  • ENVI系列教程(七)——自定义 RPC 文件图像正射校正
  • 「Java EE开发指南」如何用MyEclipse开发Java EE企业应用程序?(二)
  • Linux -- 传输层协议UDP
  • 使用Android Studio中自带的手机投屏功能
  • LeetCode:19.螺旋矩阵
  • Windows 命令行:在 cd 命令中使用绝对路径与相对路径
  • 图片修改尺寸
  • 《嵌入式硬件(十五):基于IMX6ULL的统一异步收发器(UART)的操作》
  • Python爬虫实战:研究Pandas,构建苏宁易购月饼销售数据采集与智能推荐系统
  • 导购app佣金模式的分布式计算架构:实时分账与财务对账
  • Linux Bash脚本自动创建keystore和生成公钥