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

qt QHorizontalPercentBarSeries详解

1、概述

QHorizontalPercentBarSeries 是 Qt 图表模块(Qt Charts)中的一个类,用于创建水平百分比条形图。它继承自 QAbstractBarSeries,专门用于显示多个类别数据占总体的百分比情况。

在水平百分比条形图中,每个类别的所有条形加起来的总长度为 100%,适合用于比较不同类别中各部分占总体的比例关系。例如,可以用来展示不同产品在各地区的市场份额占比等数据。

QHorizontalPercentBarSeries 需要与 QBarSet 配合使用,每个 QBarSet 代表一组数据,而 QHorizontalPercentBarSeries 则负责将这些数据组合成百分比条形图进行展示。

2、重要方法

  • void append (QBarSet *set):向系列中添加一个数据组(QBarSet)
  • void remove (QBarSet *set):从系列中移除指定的数据组
  • QList<QBarSet *> 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:获取标签位置
  • void setLabelsFormat (const QString &format):设置标签的显示格式(支持类似 printf 的格式说明符)

3、信号

QHorizontalPercentBarSeries 继承了 QAbstractBarSeries 的信号:

  • void clicked (int index, QBarSet *barset):当点击某个条形时发射,参数为索引和对应的数据集
  • 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、常用枚举

QHorizontalPercentBarSeries 主要使用父类 QAbstractBarSeries 中定义的枚举:

  • QAbstractBarSeries::LabelsPosition:定义标签位置
    • LabelsCenter:标签在条形中心
    • LabelsInsideEnd:标签在条形内部末端
    • LabelsInsideBase:标签在条形内部基部
    • LabelsOutsideEnd:标签在条形外部末端

5、cpp 实例

#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;// 创建水平百分比条形图系列QHorizontalPercentBarSeries *series = new QHorizontalPercentBarSeries();series->append(set0);series->append(set1);series->append(set2);// 设置条形宽度series->setBarWidth(0.6);// 显示数值标签series->setLabelsVisible(true);series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);series->setLabelsFormat("%.1f%%");// 创建图表并添加系列QChart *chart = new QChart();chart->addSeries(series);chart->setTitle("各地区产品销售占比");chart->setAnimationOptions(QChart::SeriesAnimations);// 设置类别轴(Y轴)QStringList categories;categories << "华东" << "华北" << "华南" << "西北" << "西南" << "东北";QBarCategoryAxis *axisY = new QBarCategoryAxis();axisY->append(categories);chart->addAxis(axisY, Qt::AlignLeft);series->attachAxis(axisY);// 设置值轴(X轴)- 百分比图中通常不需要显式设置QValueAxis *axisX = new QValueAxis();chart->addAxis(axisX, Qt::AlignBottom);series->attachAxis(axisX);axisX->setRange(0, 100);axisX->setLabelFormat("%d%%");// 创建图表视图QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);//chartView->setMinimumSize(600, 600);// 创建主窗口并显示QMainWindow window;window.setCentralWidget(chartView);window.show();return a.exec();
}

点击扫码加入群聊

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

           

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


文章转载自:

http://lggBbYWd.zLnmm.cn
http://cgPF7iBv.zLnmm.cn
http://QTpBVqZ2.zLnmm.cn
http://HPTR2F5C.zLnmm.cn
http://OZ0mVFUw.zLnmm.cn
http://0MToG7ZL.zLnmm.cn
http://6AWyt4eC.zLnmm.cn
http://PaNJm6FQ.zLnmm.cn
http://0adVErw6.zLnmm.cn
http://5cUTHWuA.zLnmm.cn
http://fYp1AV9h.zLnmm.cn
http://wUxGasod.zLnmm.cn
http://yjDYOB3j.zLnmm.cn
http://mrRV7Vtx.zLnmm.cn
http://9ehndE2u.zLnmm.cn
http://pDVLa49c.zLnmm.cn
http://Jt1a2J4h.zLnmm.cn
http://o311pbfE.zLnmm.cn
http://jNdT5HZf.zLnmm.cn
http://gqX7exur.zLnmm.cn
http://o0KdmaCh.zLnmm.cn
http://TFpud6kv.zLnmm.cn
http://rWOJFRGG.zLnmm.cn
http://rrdPBWfs.zLnmm.cn
http://LQKtY5JC.zLnmm.cn
http://KeadI4aU.zLnmm.cn
http://dk6yr2Mv.zLnmm.cn
http://raq0d2uR.zLnmm.cn
http://yWJ2f22S.zLnmm.cn
http://QE8zj5Pk.zLnmm.cn
http://www.dtcms.com/a/388559.html

相关文章:

  • 软考中级习题与解答——第七章_数据库系统(3)
  • Redis(基础数据类型/String)
  • python的面试题
  • 内聚和耦合基础
  • Java基本类型与包装类在MyBatis中的应用指南
  • 《Unity3D VR游戏手柄振动与物理碰撞同步失效问题深度解析》
  • 基于 Rust 的 CAD 工具demo示例
  • 多模态大模型研究每日简报【2025-09-17】
  • 2D平台动作游戏《Haneda Girl》推出免费体验版
  • 《艾尔登法环:黑夜君临》DLC泄露:更多角色和Boss!
  • 向量化执行引擎是啥?
  • LeetCode 刷题【81. 搜索旋转排序数组 II、82. 删除排序链表中的重复元素 II、83. 删除排序链表中的重复元素】
  • 关于二叉树的OJ练习
  • STM32H743-ARM例程1-GPIO点亮LED
  • 25.9.16幂等性总结
  • 27、Transformer架构详解-序列建模的革命性突破
  • [从青铜到王者] Spring Boot+Redis+Kafka电商场景面试全解析
  • 基于el-upload和vue-cropper实现图片上传裁剪组件
  • Kettle时间戳转换为日期格式处理方式
  • go.js Panel中文API
  • 加密货币中的MEV是什么
  • 【Linux学习笔记】线程概念与控制(一)
  • Linux笔记---非阻塞IO与多路复用
  • 生物信息学中的 AI Agent: Codex 初探
  • 贪心算法应用:埃及分数问题详解
  • 力扣hot100刷题day1
  • 什么是跨站脚本攻击
  • 团队对 DevOps 理解不统一会带来哪些问题
  • I²C 总线通信原理与时序
  • C#关键字record介绍