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

qt QHPieModelMapper详解 - 实践

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.zskr.cn/news/7767.html

相关文章:

  • webRTC golang 构建核心
  • (附源码)基于Java的学生托管系统的设计与实现 - 实践
  • agentgateway 简单试用
  • 深入解析:Go 1.25.1 自定义包调用
  • 国内AI云市场:挤不进前三,生存将成问题!
  • CDN可以使用iTrustSSL通配符证书吗?
  • [ssh]:SecureCRT的配置
  • [LeetCode] 3408. Design Task Manager
  • 从0开始的游戏全栈开发工程师学习记录
  • US$428 XTOOL X-100 PAD Tablet Key Programmer with EEPROM Adapter Support Special Functions
  • 【API接口】最新可用喜马拉雅接口
  • 25/09/18 小结
  • 用FastAPI和Streamlit实现一个ChatBot
  • re分区为y盘,efi分区为z盘
  • 文件结构与数据分析专项-解析
  • 平静
  • Codeforces 2144F Bracket Groups 题解 [ 紫 ] [ AC 自动机 ] [ DP ] [ 构造 ]
  • Clean Code/代码简洁性Good-Practice:使用统一异常来取代错误处理
  • 一个联名款电子产品的技术实现和诞生
  • JOISC
  • WPF使用Cef加载Vue3页面问题
  • IP子网划分
  • curl与wget
  • Day17冒泡排序
  • RabbitMQ—运维篇 - 指南
  • 几B大模型的空间存储大小
  • matlab免费下载安装激活教程(附安装包下载)MATLAB R2025a超详细下载安装教程
  • Spring Boot + flowable 完美结合,快速实现工作流 - 教程
  • Pyfluent 执行Meshing工作流
  • 主机连接虚拟机和hbase的命令