今天我们为大家介绍Data Visualization模块,而在前一期已经讲解过Qt Charts模块,如果说Qt Charts是一个2D界面,那我们这期要讲的Data Visualization模块,妥妥是一个3D数据可视化界面。 Data Visualization 是Qt提供的用于数据三维显示的模块,Qt5.7以后此模块可免费使用。Data Visualization用于数据的三维显示,包括三维柱状图、三维空间散点等。Data Visualization与Qt Charts类似,也是基于Qt的图形视图框架。
Data Visualization的三维显示功能主要由3种三维图形类来实现,分别是:三维柱状图类Q3Dbars、三维空间散点类Q3DScatter、三维曲面类Q3DSuface。而这3种图形类的父类是QAbstract3DGraph,由Qwindow继承而来。
Data Visualization与Qt Charts类似,都基于Qt的图形视图结构,因此一个三维图形也是由图表、序列、坐标轴等元素组成。Q3DBars、Q3DScatter、 Q3DSurface相当于Qt charts 中的QChart,而每一种三维图形对应1种三维序列。 一种序列类只能用于某种三维图形类,如QBar3DSeries只能用作三维柱状图Q33DBars的序列,而不能作为三维散点图的序列。而一个图中可以有存在多个同类型的序列,用于显示不同的曲面。 与QChart有坐标轴类一样,三维图形也有坐标轴类。分为:QValue3DAxis(用于数值型坐标轴)、QCategory3DAxis(用于文字型坐标轴),且都继承自QAbstract3DAxis。 Data Visualization模型中有数据代理类,数据代理类就是与序列对应,用于存储序列的数据的类。因三维图形类型不一样,存储数据的结构也不一样。为此,对于每一种序列,都有一个数据代理类,它们都继承自QAbstractDataProxy,而每一个数据代理类还有一个基于项数据模型的数据代理子类,如下图所示: 对于三维曲面序列QSurface3DSeries,还有一个专门用于显示地图高程数据的数据代理类,即QHeightMapSurfaceDataProxy,它可以将一个图片表示的高程数据显示为三维曲面,并且用户也可以根据自身需求自定义数据代理类。
若要在项目中使用Data Visualization模块,需要在项目配置文件中添加一行语句: Qt += datavisualization 同时在使用该模块的类的头文件或源程序文件中,加入下面两行语句:
#include using namespace QtDataVisualization
PS:本文内容参考自书籍《Qt5.9开发指南》,如有需要大家可自行前往了解。
- End -
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。 阿木实验室致力于为机器人研发提供开源软硬件工具和课程服务,让研发更高效!