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);

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

相关推荐
本喵是FW4 小时前
C语言手记3
c语言·开发语言
一杯美式 no sugar4 小时前
类和对象(中)
开发语言·c++
qq_416018724 小时前
实时数据可视化库
开发语言·c++·算法
2401_873204654 小时前
C++中的策略模式进阶
开发语言·c++·算法
xushichao19894 小时前
C++中的职责链模式实战
开发语言·c++·算法
清风徐来QCQ4 小时前
js中的模板字符串
开发语言·前端·javascript
2301_818419014 小时前
C++中的协程编程
开发语言·c++·算法
add45a4 小时前
C++中的工厂方法模式
开发语言·c++·算法
java1234_小锋4 小时前
Java高频面试题:Spring-AOP通知和执行顺序?
java·开发语言·spring
番茄去哪了5 小时前
Java基础面试题day02
java·开发语言·面向对象编程