zoukankan      html  css  js  c++  java
  • Qt Q3DScatter使用(三维可视图)

    讲解都在注释中。

    3d.pro文件

     1 #-------------------------------------------------
     2 #
     3 # Project created by QtCreator 2018-03-12T18:11:08
     4 #
     5 #-------------------------------------------------
     6  
     7 QT       += core gui datavisualization widgets
     8  
     9 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    10  
    11 TARGET = 3d
    12 TEMPLATE = app
    13  
    14 # The following define makes your compiler emit warnings if you use
    15 # any feature of Qt which has been marked as deprecated (the exact warnings
    16 # depend on your compiler). Please consult the documentation of the
    17 # deprecated API in order to know how to port your code away from it.
    18 DEFINES += QT_DEPRECATED_WARNINGS
    19  
    20 # You can also make your code fail to compile if you use deprecated APIs.
    21 # In order to do so, uncomment the following line.
    22 # You can also select to disable deprecated APIs only up to a certain version of Qt.
    23 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    24 SOURCES += 
    25         main.cpp 
    26         mainwindow.cpp
    27  
    28 HEADERS += 
    29         mainwindow.h
    30  
    31 FORMS += 
    32         mainwindow.ui
    33 target.path = $$[QT_INSTALL_EXAMPLES]/datavisualization/$$TARGET
    34 INSTALLS += target

    main.cpp

     1 #include "mainwindow.h"
     2 #include <QApplication>
     3 using namespace QtDataVisualization;
     4 int main(int argc, char *argv[])
     5 {
     6     QApplication a(argc, argv);
     7     MainWindow w;
     8     w.show();
     9     return a.exec();
    10 }

    mainwindows.cpp

     1 #include "mainwindow.h"
     2 #include "ui_mainwindow.h"
     3 #include <QtWidgets/QHBoxLayout>
     4 #include <QtWidgets/QVBoxLayout>
     5 #include "scatterdatamodifier.h"
     6 #include <QtWidgets/QMessageBox>
     7 using namespace QtDataVisualization;
     8  
     9 MainWindow::MainWindow(QWidget *parent) :
    10     QMainWindow(parent),
    11     ui(new Ui::MainWindow)
    12 {
    13     ui->setupUi(this);
    14  
    15     //创建一个三维坐标系
    16     Q3DScatter *graph = new Q3DScatter();
    17     //设置相机的位置
    18     graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetBehindLow);
    19     //设置阴影显示
    20     graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
    21     //设置坐标轴的范围
    22     graph->axisX()->setRange(0, 480);
    23     graph->axisY()->setRange(0, 480);
    24     graph->axisZ()->setRange(0, 480);
    25     //设置坐标轴的数量
    26     graph->axisX()->setSegmentCount(int(480/20));
    27     graph->axisY()->setSegmentCount(int(480/20));
    28     graph->axisZ()->setSegmentCount(int(480/20));
    29     //设置整体坐标系的主题
    30     graph->activeTheme()->setType(Q3DTheme::ThemeQt);
    31  
    32     graph->axisX()->setLabelFormat("X");
    33     graph->axisY()->setLabelFormat("Y");
    34     graph->axisZ()->setLabelFormat("Z");
    35  
    36     //
    37     QScatter3DSeries *series = new QScatter3DSeries;
    38     //点,大小
    39     series->setItemSize(0.05);
    40     //点,坐标
    41     QScatterDataArray data;
    42  
    43 //    data << QVector3D(0.5f, 0.5f, 0.5f);
    44     //创建一个widget,将坐标系添加进去
    45     QWidget *container = QWidget::createWindowContainer(graph);
    46  
    47     //判断是否graph(opengl)初始化
    48     if (!graph->hasContext()) {
    49         QMessageBox msgBox;
    50         msgBox.setText("Couldn't initialize the OpenGL context.");
    51         msgBox.exec();
    52     }
    53     //水平布局,父对象是wifget
    54     QHBoxLayout *hLayout = new QHBoxLayout(ui->widget);
    55     //垂直布局
    56     QVBoxLayout *vLayout = new QVBoxLayout();
    57     //将container添加到水平布局中
    58     hLayout->addWidget(container, 1);
    59     hLayout->addLayout(vLayout);
    60     data.append(QVector3D(0.5f, 0.5f, 0.5f));
    61     data.append(QVector3D(10, 10, 10));
    62     series->dataProxy()->addItems(data);
    63     graph->addSeries(series);
    64 }
    65  
    66 MainWindow::~MainWindow()
    67 {
    68     delete ui;
    69 }
    70  
  • 相关阅读:
    channel 功能解析
    Docker 使用 Jenkins 镜像创建容器(转)
    使用Gson将Object转String出现u003d 的原因
    Gradle基础
    JAVA HashMap 和 HashSet 的区别
    ViewStub基本用法
    String类的内存分配
    区块链--资产数字化之路
    选择排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13395386.html
Copyright © 2011-2022 走看看