QtDataVisualization 数据3D可视化

        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 等待对话框

QtDataVisualization 数据3D可视化_双子座断点的博客-CSDN博客_qtdatavisualization

  • 1
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Qt Data Visualization(Qt 数据)是 Qt 框架提供的一个模块,用于可和呈现三维数据。该模块包括许多可定制的组件,如散点图、柱状图、表面图、网格图等等。开发人员可以使用 Qt Data Visualization 模块来创建交互式的、动态的和高度可定制的三维数据应用程序。 Qt Data Visualization 模块使用 QML 语言进行编写,并且具有非常丰富的 API 和文档支持,可帮助开发人员快速上手。此外,该模块还支持 OpenGL 渲染,因此能够在不同的平台上实现高性能的三维数据。 总之,如果您需要为您的数据创建一个现代的、美观的三维可界面,Qt Data Visualization 模块是一个不错的选择。 ### 回答2: QT Data Visualization是一种基于QT框架的数据工具。它可以帮助用户快速创建各种图表和数据界面,方便用户对数据进行分析、呈现和交互。QT Data Visualization包含了多种数据组件,包括图表、3D物体、颜色条等,可以支持用户自定义数据的展示方式。下面我们将从以下几个方面详细介绍QT Data Visualization: 1. QT Data Visualization的架构 QT Data Visualization的架构采用了MVC(Model-View-Controller)模式,即将用户数据模型、数据展示和界面控制分别独立处理,使得这些角色之间的职责清晰,方便扩展和维护。QT Data Visualization的主要组成部分包括:数据模型、数据模型、图组件、控件、交互组件、颜色条等。 2. QT Data Visualization的主要功能特点 QT Data Visualization支持多种数据方式,包括线状图、柱状图、散点图、雷达图、3D表面图、3D条形图等,并且每种图表都可以支持自定义,满足用户个性需求。同时,QT Data Visualization还具有多种数据交互方式,如鼠标拖动、鼠标滚轮、键盘、手势等,便于用户控制数据的展示和处理。 3. QT Data Visualization的应用范围 QT Data Visualization广泛应用于数据分析、科学可、工程可等领域,如数据仪表盘、商业图表展示、天气预报、股市行情分析、金融风险分析、医学图像处理等。 总之,QT Data Visualization是一款功能强大、易用灵活的数据工具,可以大大简用户的数据处理过程,提高数据分析效率和精度。 ### 回答3: Qt Data Visualization是一个用于创建3D数据图表和图形的工具包。它是Qt的一个QT Charts模块的扩展,其目标是向用户提供一套灵活、强大和易于使用的API,支持数据的直观可。Qt Data Visualization不仅可以在桌面和移动设备上使用,而且可嵌入Web浏览器中,实现在Web上的数据。 Qt Data Visualization提供了多种图表类型,包括柱状图、折线图、面图、等高线图、散点图、气泡图以及3D表面图等。用户可以自定义颜色、标签、轴、图例等元素,以及对图表进行交互操作和数据项过滤等操作。Qt Data Visualization使用OpenGL进行渲染,支持高分辨率、平移、旋转和缩放等操作,让用户可以更好的了解数据之间的关系和趋势。 与Qt的其他特性相结合,Qt Data Visualization可以让开发者快速构建出个性的图表和方便用户操作的工具,这将极大的推动数字转型和数据科学的发展。通过Qt Data Visualization,开发者可以将复杂数据以图形的方式进行展示,从而提供更清晰直观的数据分析和决策支持,促进业务优和增长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双子座断点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值