Data Visualization的三维显示功能主要由三种三维图形来实现,分别是三维柱状图Q3DBars,三维空间散点Q3DScatter,三维曲面Q3DSurface。这三个类的父类都是QAbstract3DGraph,从QWindow继承而来。
Data Visualization与Qt Charts类似都是基于Qt Graphics View的图形视图结构,所以一个三维图形也是由图表、序列、坐标轴等元素构成。响应的序列类有:QBar3DSeries,QScatter3DSeries,QSurface3DSeries类。这三个序列类是与图形类Q3DBars,Q3DScatter,Q3DSurface一一对应的。在一个图中可以有多个同类型的序列,但不能有不同类型的序列。另外,三维图形也有坐标轴类,共有两种坐标轴类:QValue3DAxis和QCategory3DAxis,前者用于数值型坐标轴,后者用于文字型坐标轴。
Data Visualization模块中还有数据代理(Data Proxies),数据代理类就是与序列对应,用于存储序列的数据的类。这也涉及一些具体的功能类:QBarDataProxy,QScatterDataProxy和QSurfaceDataProxy,这也与三种图表一一对应。
本文作者原创,转载请附上文章出处与本文链接。
QtDataVisualization 数据3D可视化目录
1 .h 源代码
2 三维散点图
3 三维柱状图
4 三维曲面
说明: 本文章使用QT6 开发 和 QT5 略有区别,QT5 版本 和 QT6 版本在文章末尾都会附上链接供5参考和下载。
图标可以滚轮缩放、360旋转、阴影效果。
1 .h 源代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSplitter>
#include <QColorDialog>
#include <QVBoxLayout>
#include <QMouseEvent>
#include <QtDataVisualization>
#include <QLineEdit>
#include <QComboBox>
#include <QSlider>
#include <QSpinBox>
#include <Q3DBars>
#include <QAbstract3DGraph>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void InitGraph3D();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::MainWindow *ui;
Q3DBars *graph3D=nullptr; //三维图表
QBar3DSeries *series=nullptr; //序列
QHeightMapSurfaceDataProxy *proxy=nullptr; //数据代理
Q3DSurface *graph3DSurface=nullptr;
QSurface3DSeries *seriesSurface=nullptr;
QWidget *centerWgt=nullptr;
bool m_bClick=false;
QPoint m_Point;
int m_Zoom=100;
};
#endif // MAINWINDOW_H
2 三维散点图
//创建Q3DScatter三维散点图类对象
Q3DScatter *scatter;
scatter=new Q3DScatter();
centerWgt=QWidget::createWindowContainer(scatter);
scatter->setFlags(scatter->flags() ^ Qt::FramelessWindowHint);
//新建序列和数据,在序列中加入3个点,把序列添加到图形
QScatter3DSeries *series = new QScatter3DSeries;
QScatterDataArray data;
data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f);
series->dataProxy()->addItems(data);
scatter->addSeries(series);
3 三维柱状图
//构造一个三维柱状图对象
Q3DBars *bars;
bars=new Q3DBars();
centerWgt=QWidget::createWindowContainer(bars);
bars->setFlags(bars->flags() ^ Qt::FramelessWindowHint); //top level
//设置坐标轴的显示范围
bars->rowAxis()->setRange(0, 4);
bars->columnAxis()->setRange(0, 4);
//创建5行数据,放入序列,添加到图形
QBar3DSeries *series = new QBar3DSeries;
QBarDataRow *data = new QBarDataRow;
*data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
series->dataProxy()->addRow(data);
bars->addSeries(series);
4 三维曲面
//创建一个三维曲面对象
Q3DSurface *surface;
surface=new Q3DSurface();
centerWgt=QWidget::createWindowContainer(surface);
surface->setFlags(surface->flags() ^ Qt::FramelessWindowHint);
//创建数据对象
QSurfaceDataArray *data = new QSurfaceDataArray;
QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;
QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;
//为数据对象赋值
*dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);
*dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);
*data << dataRow1 << dataRow2;
//创建序列,加入数据,添加到Q3DSurface
QSurface3DSeries *series = new QSurface3DSeries;
series->dataProxy()->resetArray(data);
surface->addSeries(series);
资源链接:QtDataVisualization三维控件-C++文档类资源-CSDN下载
密码: https://blog.csdn.net/qq_37529913?type=blog
其它文章 :
QT TextEdit控件_双子座断点的博客-CSDN博客_qt textedit
QT QComboBox使用详解_双子座断点的博客-CSDN博客
QT QtableView操作详解_双子座断点的博客-CSDN博客_qtableview增删改查
Qt QStandardItemModel(1.超级详细用法)_双子座断点的博客-CSDN博客_qstandardmodel
Qt QStandardItemModel(2.超级详细函数)_双子座断点的博客-CSDN博客_qstandarditemmodel点击事件
QT QRadioButton使用详解_双子座断点的博客-CSDN博客_qt radiobutton
QT QLineEdit使用详解_双子座断点的博客-CSDN博客_qt qlineedit
Qt QMessageBox使用详解_双子座断点的博客-CSDN博客_qt message
QChart折线图、饼状图、条形图、曲线图_双子座断点的博客-CSDN博客_qchart样式
QChart属性详解_双子座断点的博客-CSDN博客_setanimationoptions
QCharts QValueAxis使用_双子座断点的博客-CSDN博客_qvalueaxis
Qt 5 等待提示框(开源 动态图)_双子座断点的博客-CSDN博客_qt 等待对话框文章来源:https://www.toymoban.com/news/detail-628822.html
QtDataVisualization 数据3D可视化_双子座断点的博客-CSDN博客_qtdatavisualization文章来源地址https://www.toymoban.com/news/detail-628822.html
到了这里,关于QtDataVisualization 数据3D可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!