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

10-1_Qt 5.9 C++开发指南_Data Visualization实现数据三维显示

Data Visualization 是 Qt 提供的用于数据三维显示的模块。在 Qt 5.7 以前只有商业版才有此模块,而从Qt5.7 开始此模块在社区版本里也可以免费使用了。Data Visualization 用于数据的三维显示,包括三维柱状图、三维空间散点、三维曲面等。Data Visualization 与 Qt Charts 类似,也是基于Qt的图形视图架构。Data Visualization 的功能无法和一些专业的三维显示类库相提并论,但是对于一些简单的三维数据显示是比较实用的,例如一些科学计算结果的三维显示。

本章介绍 Data Visualization 模块的一些主要功能的使用,主要是三维柱状图、三维空间散点和三维曲面的显示。

文章目录

  • 1. DataVisualization 模块概述
  • 2. 利用 DataVisualization 模块实现数据三维显示

1. DataVisualization 模块概述

Data Visualization 的三维显示功能主要由 3种三维图形类来实现,分别是三维柱状图类Q3DBars,三维空间散点类Q3DScatter,三维曲面类Q3DSurface。这3 个类的父类是 QAbstract3DGraph,是从QWindow 继承而来的,继承关系如图10-1 所示。

在这里插入图片描述

Data Visualization与 Qt Charts 类似,都基于 Qt 的图形视图结构,所以一个三维图形也是由图表、序列、坐标轴等元素组成的。Q3DBars、Q3DScatter、Q3DSurface 相当于 Qt Charts 中的QChart,而每一种三维图形对应一种三维序列,Data Visualization 中的3种序列类见图10-2

在这里插入图片描述

一种序列类只能用于某种三维图形类,如QBar3DSeries只能用作三维柱状图Q3DBars 的序列而不能作为三维散点图 Q3DScatter 的序列。在一个图中可以有多个同类型的序列,如三维曲面图Q3DSurface 中可以有多个 QSurface3DSeries 序列,用于显示不同的曲面。

与QChart 有坐标轴类一样,三维图形也有坐标轴类。有两种三维坐标轴类,QValue3DAxis用于数值型坐标轴,QCategory3DAxis 用于文字型坐标轴,它们都继承自 QAbstract3DAxis(如图 10-3 所示)

在这里插入图片描述

Data Visualization 模块中有数据代理(data proxy)类,数据代理类就是与序列对应,用于存储序列的数据的类。因为三维图形类型不一样,存储数据的结构也不一样,例如三维散点序列 QSatter3DSerics 存储的是一些三维数据点的坐标,只需要用一维数组或列表就可以存储这些数据,而QSurface3DSeries 序列存储的数据点在水平面上是均匀网格分布的,需要二维数组才可以存储相应的数据。为此,对于每一种序列,都有一个数据代理类,它们都继承自QAbstractDataProxy,每个数据代理类还有一个基于项数据模型的数据代理子类(如图 10-4 所示)。

在这里插入图片描述

对于三维曲面序列 QSurface3DSeries,还有一个专门用于显示地图高程数据的数据代理类QHeightMapSurfaceDataProxy,可以将一个图片表示的高程数据显示为三维曲面。用户也可以根据需要从QAbstractDataProxy 继承,定义自己的数据代理类。

要在项目中使用 Data Visualization 模块,需要在项目配置文件中添加下面一行语句:

Qt += datavisualization

在使用 Data Visualization 模块中的类的头文件或源程序文件中,还需要加入下面两行语句。如果只需使用模块中的部分类,可以单独包含某些类。

#include <QtDataVisualization>
using namespace QtDataVisualization;

2. 利用 DataVisualization 模块实现数据三维显示

利用 DataVisualization 模块实现三维柱状图、三维散点图、三维曲面绘图、三维地形图实例需结合对应实例学习使用。

http://www.lryc.cn/news/119704.html

相关文章:

  • [保研/考研机试] KY87 鸡兔同笼 北京大学复试上机题 C++实现
  • Jmeter快捷方式和应用图标设置
  • PHP sm4国密加密解密文件
  • CBCGPRibbon 添加Edit、Combox、Hyperlink控件
  • 漫话拥塞控制:BBR 是个单流模型
  • HTML详解连载(1)
  • 最新版本2023UI千月影视APP源码 开源完美版前后端完美匹配 后端基于ThinkPHP框架
  • centos7安装Docker详细步骤(无坑版教程)
  • Python入门自学进阶-Web框架——39、redis、rabbitmq、git——2
  • 了解IL汇编跳转语句
  • JVM运行时五大数据区域详解
  • Vuex 使用教程
  • springboot启动you will need to add ‘org.slf4j‘ to prefer-application-packages异常解决
  • 云原生核心原则和特征
  • 【ElasticSearch入门】
  • SQL | 注释
  • oi知识表+NOIP提高组算法及算法思想总结
  • 【mysql】实现递归查询
  • JUC并发编程之原子类
  • 测试设计中隐藏的边界有哪些?
  • 领航优配:暑期旅游市场热度持续攀升,相关公司业绩有望持续释放
  • 基于 CentOS 7 构建 LVS-DR 集群 及 配置nginx负载均衡
  • docker搭建在线Markdown服务器
  • 打靶练习:WestWild 1.1(一个简单但不失优雅的Ubuntu靶机)
  • 【2.3】Java微服务:sentinel服务哨兵
  • 【C++】开源:abseil-cpp基础组件库配置使用
  • 【GPT-3 】创建能写博客的AI工具
  • [保研/考研机试] KY35 最简真分数 北京大学复试上机题 C++实现
  • 算法备案后,企业需要做什么?合规与执行挑战
  • 云原生应用程序的自动化管理和编排