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

Qt QPercentBarSeries详解

1、概述

QPercentBarSeries 是 Qt 图表模块(Qt Charts)中用于创建百分比堆积条形图的类,它继承自 QAbstractBarSeries。百分比堆积条形图将每个类别的别的数据显示为一个条形,其中部分按比例类别中的不同系列数据按百分比分割,每个条形的总高度始终为 100%,非常适合展示各部分占总体的比例关系。

2、重要方法

  • void append(QAbstractBarSet *set):向系列中添加一个数据组(QBarSet)
  • void remove(QAbstractBarSet *set):从系列中移除指定的数据组
  • QList<QAbstractBarSet *> barSets() const:返回系列中所有数据组的列表
  • void clear():清空系列中所有的数据组
  • QBarCategoryAxis *categoriesAxis() const:返回用于 X 轴的类别轴
  • void setCategoriesAxis(QBarCategoryAxis *axis):设置 X 轴的类别轴
  • QValueAxis *valueAxis() const:返回用于 Y 轴的值轴
  • void setValueAxis(QValueAxis *axis):设置 Y 轴的值轴
  • QString name() const:返回系列的名称
  • void setName(const QString &name):设置系列的名称

3、信号

  • void clicked(int index, QBarSet *barset):当点击条形图中某个具体数据块时触发,参数为索引和对应的数据组
  • void hovered(bool status, int index, QBarSet *barset):当鼠标悬停在数据块上或离开时触发,status 表示是否悬停,index 为索引,barset 为对应的数据组
  • void pressed(int index, QBarSet *barset):当在数据块上按下鼠标时触发
  • void released(int index, QBarSet *barset):当在数据块上释放鼠标时触发
  • void doubleClicked(int index, QBarSet *barset):当双击数据块时触发

4、常用枚举

QPercentBarSeries 本身没有定义专门的枚举,但它继承自 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 <QHCandlestickModelMapper>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;// 创建百分比堆积条形图系列QPercentBarSeries *series = new QPercentBarSeries();series->append(set0);series->append(set1);series->append(set2);series->setName("各地区产品销售占比");// 创建图表并添加系列QChart *chart = new QChart();chart->addSeries(series);chart->setTitle("2023年各地区产品销售占比统计");chart->setAnimationOptions(QChart::SeriesAnimations);// 创建类别轴(X轴)QStringList categories;categories << "华东" << "华北" << "华南" << "西北" << "西南" << "东北";QBarCategoryAxis *axisX = new QBarCategoryAxis();axisX->append(categories);chart->addAxis(axisX, Qt::AlignBottom);series->attachAxis(axisX);// 创建值轴(Y轴)QValueAxis *axisY = new QValueAxis();axisY->setRange(0, 100);axisY->setLabelFormat("%d%%");chart->addAxis(axisY, Qt::AlignLeft);series->attachAxis(axisY);// 设置数据标签可见series->setLabelsVisible(true);series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);// 创建图表视图并显示QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);chartView->resize(800, 600);chartView->show();return a.exec();
}

点击扫码加入群聊

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

http://www.dtcms.com/a/388794.html

相关文章:

  • RTT操作系统(3)
  • DNS服务管理
  • IDA Pro配置与笔记
  • 虚函数表在单继承与多继承中的实现机制
  • 矿石生成(1)
  • Linux 线程的概念
  • Unity学习之资源管理(Resources、AssetDatabase、AssetBundle、Addressable)
  • LG P5138 fibonacci Solution
  • 删除UCPD监控服务或者监控驱动
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(33):文法運用第10回1+(考え方14)
  • 向量技术研究报告:从数学基础到AI革命的支柱
  • 802.1x和802.1Q之间关联和作用
  • 基于大模型多模态的人体体型评估:从“尺码测量”到“视觉-感受”范式
  • 更符合人类偏好的具身导航!HALO:面向机器人导航的人类偏好对齐离线奖励学习
  • Transformer多头注意力机制
  • git 分支 error: src refspec sit does not match any`
  • VN1640 CH5 I/O通道终极指南:【VN1630 I/O功能在电源电压时间精确度测试中的深度应用】
  • qt QHorizontalBarSeries详解
  • 半导体制造的芯片可靠性测试的全类别
  • MySQL 索引详解:原理、类型与优化实践
  • AI 重塑就业市场:哪些岗位将被替代?又会催生哪些新职业赛道?
  • mysql表分区备份太慢?如何精准“狙击”所需数据?
  • InVEST实践及在生态系统服务供需、固碳、城市热岛、论文写作等实际项目中应用
  • 数据库视图详解
  • C#并行处理CPU/内存监控:用PerformanceCounter实时监控,避免资源过载(附工具类)
  • 数据结构初阶——红黑树的实现(C++)
  • PS练习1:将风景图放到相框中
  • Seedream 4.0深度评测:新一代AI图像创作的革命性突破
  • Python中的异常和断言
  • java求职学习day32