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

Qt QVPieModelMapper详解

1、概述

QVPieModelMapper 是 Qt Charts 模块中的一个类,用于将数据模型(QAbstractItemModel)与饼图(QPieSeries)进行垂直方向的数据映射。它建立了模型数据与饼图扇区之间的关联,使得模型中的数据可以自动在饼图中可视化展示,并且支持数据的动态更新。

垂直映射意味着 QVPieModelMapper 会将模型中的每一行数据映射为饼图中的一个扇区,通常使用一列作为扇区的值,另一列作为扇区的标签。这种映射方式非常适合处理按类别组织的数据。

2、重要方法

  • QPieSeries *series() const:返回当前关联的饼图系列

  • void setSeries(QPieSeries *series):设置要关联的饼图系列

  • QAbstractItemModel *model() const:返回当前关联的数据模型

  • void setModel(QAbstractItemModel *model):设置要关联的数据模型

  • int valuesColumn() const:返回用于扇区值的数据列索引

  • void setValuesColumn(int column):设置用于扇区值的数据列索引

  • int labelsColumn() const:返回用于扇区标签的数据列索引

  • void setLabelsColumn(int column):设置用于扇区标签的数据列索引

  • int firstRow() const:返回开始映射的数据行索引

  • void setFirstRow(int row):设置开始映射的数据行索引

  • int rowCount() const:返回要映射的数据行数

  • void setRowCount(int count):设置要映射的数据行数

3、信号

  • void seriesReplaced():当关联的饼图系列被替换时发射
  • void modelReplaced():当关联的数据模型被替换时发射
  • void valuesColumnChanged():当值列索引改变时发射
  • void labelsColumnChanged():当标签列索引改变时发射
  • void firstRowChanged():当起始行索引改变时发射
  • void rowCountChanged():当映射的行数改变时发射

这些信号可以用于监测映射关系的变化,以便在界面中做出相应的更新。

4、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);// 1. 创建数据模型并添加数据QStandardItemModel model;// 设置列数:第一列是标签,第二列是值model.setColumnCount(2);// 添加数据行model.appendRow({new QStandardItem("苹果"), new QStandardItem("35")});model.appendRow({new QStandardItem("香蕉"), new QStandardItem("25")});model.appendRow({new QStandardItem("橙子"), new QStandardItem("20")});model.appendRow({new QStandardItem("葡萄"), new QStandardItem("15")});model.appendRow({new QStandardItem("其他"), new QStandardItem("5")});// 2. 创建饼图系列QPieSeries *series = new QPieSeries();series->setName("水果销量分布");// 3. 创建垂直映射器并建立关联QVPieModelMapper *mapper = new QVPieModelMapper();mapper->setModel(&model);          // 设置数据模型mapper->setSeries(series);         // 设置饼图系列mapper->setLabelsColumn(0);        // 标签使用第0列mapper->setValuesColumn(1);        // 值使用第1列mapper->setFirstRow(0);            // 从第0行开始mapper->setRowCount(model.rowCount()); // 映射所有行// 4. 创建图表并添加系列QChart *chart = new QChart();chart->addSeries(series);chart->setTitle("水果销量占比图");chart->legend()->setAlignment(Qt::AlignRight);// 5. 创建图表视图并显示QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);chartView->resize(800, 600);chartView->show();return a.exec();
}

点击扫码加入群聊

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

           

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

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

相关文章:

  • 【MySQL数据库管理问答题】第1章 MySQL 简介
  • 铁头山羊视stm32-HAL库
  • iOS 26 帧率检测实战攻略 如何监控FPS、GPU渲染、Core Anima
  • AWS Lightsail vs 阿里云轻量:企业上云服务器选型深度对比
  • stm32中的位带操作的使用意义
  • Qt QStackedBarSeries详解
  • 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.螺旋矩阵