QT新手日记035

三维图表显示

三维图表类主要有Q3DBars\Q3DScatter/Q3DSurface组成

他们基于类QAbstract3DGraph。

与QChart类似

数据类包括

QBar3DSeries/QScatter3DSeries/QSurface3DSeries

轴也是差不多

QAbstract3DAxis

包括了QCategory3DAxis和QValue3DAxis。除了多3D字母。其他的几乎相同。

有区别的时,3D图表包括一个数据代理Data Proxies。主要用于存储序列的数据的类。

图形不一样,存储的数据代理也不一样。分别有如下这些:

QBarDataProxy->QItemModelBarDataProxy

QScatterDataProxy->QItemModelScafferdataProxy

QSuffaceDataProxy->QHeightMapSurfaceDataProxy、QItemModelSurfaceDataProxy

为什么要用代理呢?

3D表示的数据很多。数据量大,必须用缓冲填充的方式使用代理是性能表现更良好。

使用3D图表需要在pro加入

QT +=...... datavisualization

引用加入

#include<QtDataVisualization>

using namespace QtDataVisualization;

下面的应用实例:

Q3DBars d3=new Q3DBars;

QValue3DAxis * value = new QValue3DAxis ;

value ->setTitle("value");

value ->setTitleVisible(true);

QCategory3DAxis *col = new QCategory3DAxis;

QCategory3DAxis *row = new QCategory3DAxis;

col->setTitle("COL");

col->setTitleVisible(true);

col->setLables({标签列表});

row->setTitle("ROW");

row->setTitleVisible(true);

row->setLabels({标签列表});

d3->setValueAxis(value);

d3->setRowAxis(row);

d3->setColumnAxis(col);

最后。要把这个东西显示在窗口上。要加点东西

//容器

QSplitter *sp=new QSplitter(Qt::Horizontal);

sp->addWidget(createWindowContainer(d3));

this->setCentralWidget(sp);

这样就可以了。

//添加数据序列

QBar3DSeries *ser = new QBar3DSeries;

ser->setMesh(QAbstract3DSeries :: MeshCylinder);

ser->setItemLabelFormat("(@rowLabel,@colLabel):$.1f");

d3->addSeries(ser);

//添加数据

QBarDataArray *dataset = new QBarDataArray;

dataset->reserve(row.count());

QBarDataRow drow=new QBarDataRow;

*drow <<1<<2<<3<<4<<5;//加入五行

dataset->append(drow);

ser->dataProxy()->resetArray(dataset);

最后主要是对数据的变化进行动态的变化。

相关推荐
优橙教育2 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
SeaTunnel4 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影4 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Marst Code5 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
Miao121315 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
CRMEB系统商城6 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience7 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
我的xiaodoujiao7 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
爱喝水的鱼丶8 小时前
SAP-ABAP:ALV通用封装实践——搭建可复用的ALV开发工具类,减少80%重复代码
开发语言·性能优化·sap·abap·erp·alv
脱胎换骨-军哥8 小时前
C++/Rust无缝互操作:混合系统新常态
开发语言·c++·rust