qt QHPieModelMapper详解 - 实践

news/2025/9/19 8:19:25/文章来源:https://www.cnblogs.com/wzzkaifa/p/19100041

1. 概述

QHPieModelMapper是Qt Charts模块中用于饼图的水平模型映射器。它允许将QAbstractItemModel派生的模型作为数据源,将模型中的数据映射到QPieSeries中,从而使模型的每一列定义饼图的一个切片,每行则映射为切片的标签或值。通过QHPieModelMapper,可以方便地将模型数据与饼图系列同步,实现数据的可视化展示。

2. 重要方法

  • QHPieModelMapper(QObject *parent = nullptr),创建一个QHPieModelMapper对象,其父对象为parent
  • void setModel(QAbstractItemModel *model):设置映射器使用的模型。

  • QAbstractItemModel *model() const:返回当前使用的模型。

  • void setSeries(QPieSeries *series):设置映射器使用的饼图系列。

  • QPieSeries *series() const:返回当前使用的饼图系列。

  • void setColumnCount(int columnCount):设置映射到饼图系列的模型列数。

  • int columnCount() const:返回映射的列数。

  • void setFirstColumn(int firstColumn):设置包含第一个切片值的模型列。

  • int firstColumn() const:返回包含第一个切片值的模型列。

  • void setLabelsRow(int labelsRow):设置与饼图切片标签同步的模型行。

  • int labelsRow() const:返回与饼图切片标签同步的模型行。

  • void setValuesRow(int valuesRow):设置与饼图切片值同步的模型行。

  • int valuesRow() const:返回与饼图切片值同步的模型行。

3. 信号

  • columnCountChanged:当列数发生变化时发出。

  • firstColumnChanged:当第一列发生变化时发出。

  • labelsRowChanged:当标签行发生变化时发出。

  • modelReplaced:当映射器连接的模型发生变化时发出。

  • seriesReplaced:当映射器连接的系列发生变化时发出。

  • valuesRowChanged:当值行发生变化时发出。

4. cpp实例

#include
#include
#include
#include
#include
#include
#include
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建模型并添加数据
QStandardItemModel model(4, 2);
model.setHorizontalHeaderLabels({"Label", "Value"});
model.setItem(0, 0, new QStandardItem("Category A"));
model.setItem(0, 1, new QStandardItem("20"));
model.setItem(1, 0, new QStandardItem("Category B"));
model.setItem(1, 1, new QStandardItem("30"));
model.setItem(2, 0, new QStandardItem("Category C"));
model.setItem(2, 1, new QStandardItem("40"));
model.setItem(3, 0, new QStandardItem("Category D"));
model.setItem(3, 1, new QStandardItem("10"));
// 创建饼图系列
QPieSeries *series = new QPieSeries();
// 创建水平模型映射器
QHPieModelMapper *mapper = new QHPieModelMapper();
mapper->setModel(&model);
mapper->setSeries(series);
mapper->setFirstColumn(0);
mapper->setColumnCount(2);
mapper->setLabelsRow(0);
mapper->setValuesRow(1);
// 创建图表并添加系列
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Pie Chart Example");
// 创建图表视图并显示
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
chartView->resize(400, 300);
chartView->show();
return a.exec();
}

点击扫码加入群聊

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webRTC golang 构建核心

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

数据分析与产品、运营、市场之间如何有效对齐 - 详解

数据分析与产品、运营、市场之间如何有效对齐 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

(附源码)基于Java的学生托管系统的设计与实现 - 实践

(附源码)基于Java的学生托管系统的设计与实现 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

agentgateway 简单试用

agentgateway 简单试用以下是一个简单示例,主要测试多mcp tools 的聚合,集成了基于litserve 的mcp server 以及genai toolbox 安装 目前github 上暂时未系统mac x86 架构的包,可以自己编译命令git clone https://gi…

SVG动画优化全攻略:从设计到性能提升

本文详细介绍了如何通过清洁设计、路径简化、代码分层和元素复用等技术优化SVG动画,涵盖工具选择、结构设计到CSS动画实现的全流程,帮助开发者创建高性能的SVG动画效果。粉碎动画第四部分:优化SVG SVG动画让我回想起…

深入解析:Go 1.25.1 自定义包调用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MX 练石 2026 NOIP #7

0 + 10 + 10 + 0 = 20, Rank 152/199.好难好难好难好难,为数不多的罚坐了。 4h20min 怒砍 20pts /ohMX 练石 2025 NOIP #6 链接:link 题解:link 时间:4h20min (2025.09.18 13:50~18:10) 题目数:4 难度:A B C D估…

多元积性函数

定义:若函数 \(f(n,m)\) 满足 \(ab \perp xy \Rightarrow f(ax,by)=f(a,b)f(x,y)\),则称 \(f\) 为二元积性函数。 积性分解:将 \(x=\prod p_i^{\alpha _i},y=\prod p_i^{\beta _i}\),则有 \(f(x,y)=\prod f(p_i^{\…

国内AI云市场:挤不进前三,生存将成问题!

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087中国AI云市场已形成“一大四强”的格局,阿里云以35.8%的份额独占鳌…

P14053 [SDCPC 2019] Median 题解

P14053 [SDCPC 2019] Median 题解P14053 [SDCPC 2019] Median 题解 一道水题。 观察题意,很快我们可以发现,对于元素 \(i\),其合不合法取决于一定大于 \(i\) 的数的个数与一定小于 \(i\) 的数的个数。 这时,我们只…

lQueryDef查询Evaluate报该几何不包含M值问题。

地理数据库既包括空间,又包括属性,属性类似于SQL表,理论上支持标准SQL查询。lQueryDef接口提供了高效查询方法,适用于对属性表或要素类的属性进行筛选和检索。 问题描述 一个简单的面积求和示例如下:IQueryDefFac…

我的首个RCE漏洞发现之旅:Apache ActiveMQ远程代码执行实战

本文详细讲述了作者如何通过系统化的子域名枚举和端口扫描,发现Apache ActiveMQ的CVE-2023-46604远程代码执行漏洞的全过程,包含具体的工具使用方法和实战技巧。我的首个RCE漏洞发现经历 大家好!在这篇文章中,我将…

北京市社保费用差额补缴计算工具

北京市社保费用差额补缴计算工具9月18日北京市发布了社会保险缴费工资基数上下限调整的通告,自2025年7月起,社保基数下限由原来的 6821元提高到7162元。 这样一来,之前已经缴了7月份社保且社保基数不到7162元的就需…

使用自签名SSL证书有什么风险?

自签名SSL证书,指的是由用户自行生成密钥对并予以签名的证书,无需经由第三方权威证书颁发机构(CA)审核。鉴于其具备零成本、生成便捷的特性,该证书常被应用于个人测试、内部临时服务等非生产场景。 然而,相较于权…

CDN可以使用iTrustSSL通配符证书吗?

CDN,即内容分发网络,它是一种通过在多个地理位置分散部署服务器节点,将网站的内容缓存并分发到离用户最近的节点上,从而显著提高网站内容的访问速度、降低延迟,并减轻源服务器负载的技术架构。借助CDN,网站能够更…

[ssh]:SecureCRT的配置

[ssh]:SecureCRT的配置[ssh]:SecureCRT的配置一、有用配置1.  Terminal  ->  Emulation 2.  Terminal  ->  Apperance 二、参考1.  无.本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】…

OpenCvSharp基于颜色反差规避FBA面单贴标

01 规避原理 1.抠图,根据色差或者根据固定包裹位置以及包裹尺寸抠出纸箱图片 2.色差,获取纸箱上所有背景色的灰度值 3.采图,采集大量视野相同,光源相同面单的色差灰度值,整理区间 4.取反,所有非面单灰度值区间的…

[LeetCode] 3408. Design Task Manager

There is a task management system that allows users to manage their tasks, each associated with a priority. The system should efficiently handle adding, modifying, executing, and removing tasks. Implem…

从0开始的游戏全栈开发工程师学习记录

从0开始的游戏全栈开发工程师学习记录开始学习游戏开发

Torrent File Editor 1.0.0

https://torrent-file-editor.github.io/ 下载:https://github.com/torrent-file-editor/torrent-file-editor/releases