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

qt QHXYModelMapper详解

1、概述

QHXYModelMapper 类是用于线、样条线和散点系列的水平模型映射器。它允许使用从 QAbstractItemModel 类派生的数据模型作为图表的数据源。水平模型映射器用于在线条、样条线或散点图系列与具有 X and Y 行表示坐标,列表示 XYSeries 的数据点。TableModel 是该模型的自然选择。模型和系列属性均可用于操作数据,模型映射器使系列和数据模型保持同步。

2、重要方法

QHXYModelMapper::QHXYModelMapper(QObject *parent = nullptr),构造一个映射器对象,该对象是 parent

void setModel(QAbstractItemModel *model),设置映射器使用的模型。

void setSeries(QXYSeries *series),设置映射器所使用的系列。当将系列设置为映射器时,系列中的所有数据都将被丢弃。当指定新系列时,旧系列将断开连接(但会保留其数据)。

void setXRow(int xRow),设置包含数据点 x 坐标的模型行。

void setYRow(int yRow),设置包含数据点 y 坐标的模型行。

void setFirstColumn(int firstColumn),设置包含该系列第一个点的数据的模型列。

void setColumnCount(int columnCount),设置映射为系列数据的模型的列数。

3、信号

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

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

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

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

  • xRowChanged:当包含数据点 x 坐标的行发生变化时发出此信号。

  • yRowChanged:当包含数据点 y 坐标的行发生变化时发出此信号。

4、cpp实例

#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QAreaSeries>
#include <QLegend>
#include <QHCandlestickModelMapper>QT_CHARTS_USE_NAMESPACE// 创建一个自定义模型,用于存储数据
class CustomModel : public QStandardItemModel
{
public:CustomModel(QObject *parent = nullptr): QStandardItemModel(parent){// 设置列数setColumnCount(3);setRowCount(5);// 设置表头setHeaderData(0, Qt::Horizontal, "X Value");setHeaderData(1, Qt::Horizontal, "Y1 Value");setHeaderData(2, Qt::Horizontal, "Y2 Value");// 填充一些示例数据for (int row = 0; row < rowCount(); ++row) {// X 值 (第0列)setData(index(row, 0), row * 2);// Y1 值 (第1列)setData(index(row, 1), QRandomGenerator::global()->bounded(10));// Y2 值 (第2列)setData(index(row, 2), QRandomGenerator::global()->bounded(15));}}
};int main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建主窗口和布局QWidget window;QVBoxLayout *mainLayout = new QVBoxLayout(&window);// 创建模型CustomModel *model = new CustomModel(&window);// 创建表格视图并设置模型QTableView *tableView = new QTableView;tableView->setModel(model);mainLayout->addWidget(tableView);// 创建图表视图QChartView *chartView = new QChartView;chartView->setRenderHint(QPainter::Antialiasing);mainLayout->addWidget(chartView);// 创建图表QChart *chart = new QChart;chart->setTitle("QHXYModelMapper 示例");chartView->setChart(chart);// 创建第一个系列(折线系列)QLineSeries *series1 = new QLineSeries;series1->setName("系列 1");// 创建第一个水平模型映射器QHXYModelMapper *mapper1 = new QHXYModelMapper(&window);mapper1->setXRow(0);        // 使用第0列作为X坐标mapper1->setYRow(1);        // 使用第1列作为Y坐标mapper1->setFirstColumn(0); // 从第0列开始mapper1->setColumnCount(model->columnCount()); // 设置列数mapper1->setSeries(series1); // 设置要映射的系列mapper1->setModel(model);    // 设置数据模型// 创建第二个系列(散点系列)QScatterSeries *series2 = new QScatterSeries;series2->setName("系列 2");series2->setMarkerSize(10.0);// 创建第二个水平模型映射器QHXYModelMapper *mapper2 = new QHXYModelMapper(&window);mapper2->setXRow(0);        // 使用第0列作为X坐标mapper2->setYRow(2);        // 使用第2列作为Y坐标mapper2->setFirstColumn(0); // 从第0列开始mapper2->setColumnCount(model->columnCount()); // 设置列数mapper2->setSeries(series2); // 设置要映射的系列mapper2->setModel(model);    // 设置数据模型// 将系列添加到图表chart->addSeries(series1);chart->addSeries(series2);// 创建默认坐标轴chart->createDefaultAxes();// 设置窗口大小并显示window.resize(800, 600);window.show();return a.exec();
}

点击扫码加入群聊

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

           

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


文章转载自:

http://YI7N6adb.kqpsj.cn
http://JJnF8sKI.kqpsj.cn
http://CJSuHwaE.kqpsj.cn
http://CweWjh7q.kqpsj.cn
http://BHtyW5VW.kqpsj.cn
http://kEXtafqf.kqpsj.cn
http://8kSgKRdG.kqpsj.cn
http://UzpZqM6g.kqpsj.cn
http://9yGLh7ES.kqpsj.cn
http://sp81eJ5w.kqpsj.cn
http://bDASvsjW.kqpsj.cn
http://zRCdDxEz.kqpsj.cn
http://T21ypFi9.kqpsj.cn
http://JUHZqeVn.kqpsj.cn
http://u7GCvyFt.kqpsj.cn
http://cflh9NKz.kqpsj.cn
http://HbXXYzPU.kqpsj.cn
http://pA8qN7oh.kqpsj.cn
http://PFTQkHAn.kqpsj.cn
http://RyzqHGEK.kqpsj.cn
http://UFYBjobi.kqpsj.cn
http://k1QKvWdI.kqpsj.cn
http://5mSbIqDm.kqpsj.cn
http://zWgcaL47.kqpsj.cn
http://D2BDuiG3.kqpsj.cn
http://nu4JY0Ht.kqpsj.cn
http://OlsyGc9Q.kqpsj.cn
http://wGxaw3qN.kqpsj.cn
http://LHPF8owL.kqpsj.cn
http://D5GjzC4V.kqpsj.cn
http://www.dtcms.com/a/387501.html

相关文章:

  • 机器学习中的编码问题和标准化:类别编码、one-hot编码缺陷及改进
  • Qt QHorizontalStackedBarSeries详解
  • Python爬虫实战:研究Pandas,构建全运会数据采集和分析系统
  • 告别冗余 DOM:Vue Fragment 用法与性能优化解析
  • 快速排序:原理、实现与优化
  • JavaScript性能优化实战:深入剖析性能瓶颈与最佳实践
  • Lattice ECP5系列FPGA介绍
  • PySpark 窗口函数row_number、lag、lead的使用简述
  • 华为FreeBuds 7i不同设备要如何连接?
  • 使用LVS架设服务器集群系统实现负载均衡与高可用的知识点详解
  • 84-dify案例分享-使用Qwen-Image实现文生图、图生图
  • 留个档,Unity,Animation控制相机,出现抖动的问题记录
  • CentOS 8.5部署Zabbix6.0 server端
  • CentOS系统下安装Docker记录
  • CentOS 7 如何安装 EPEL 源?epel-release-latest-7.noarch.rpm 安装教程(附安装保存)
  • CentOS 7 源码版 PhpMyAdmin 安装指南(适配 Nginx+PHP-FPM 环境)
  • 在 WSL Ubuntu 上使用 Docker 搭建可被 Ansible 控制的受控节点环境
  • 数据赋能,安全护航——D-QS工程造价数字化平台的数据治理与行业应用
  • Matplotlib 可视化:从基础绘图到高级定制
  • 知识管理与高效学习技术
  • 【AI总结】万字长文预警!Spring Boot 4 全景深度解析:从虚拟线程到声明式 HTTP 客户端,再到云原生最佳实践
  • 小杰机器学习(eight)——tensorflow进行线性回归——算法实现、数据加载、模型定义、模型保存与加载、查看网络结构。
  • 什么是网络安全态势感知
  • O3.6opencv风格迁移和人脸识别
  • uniapp h5本地域名调试解决跨域
  • IvorySQL 与 deepin 完成兼容性认证,共创开源生态新篇章
  • vue和springboot和ngnix跨域问题
  • 云边云科技4G路由器:连锁门店智慧联网的可靠基石
  • Ubuntu修改环境变量
  • 3D影像地形图的制作:利用ArcGISPro