zoukankan      html  css  js  c++  java
  • Qt 数据三维显示

    .pro文件

     1 #-------------------------------------------------
     2 #
     3 # Project created by QtCreator 2019-01-10T15:27:17
     4 #
     5 #-------------------------------------------------
     6 
     7 
     8 QT       += core gui
     9 QT       +=datavisualization
    10 
    11 
    12 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    13 
    14 
    15 TARGET = samp10_1
    16 TEMPLATE = app
    17 
    18 
    19 # The following define makes your compiler emit warnings if you use
    20 # any feature of Qt which has been marked as deprecated (the exact warnings
    21 # depend on your compiler). Please consult the documentation of the
    22 # deprecated API in order to know how to port your code away from it.
    23 DEFINES += QT_DEPRECATED_WARNINGS
    24 
    25 
    26 # You can also make your code fail to compile if you use deprecated APIs.
    27 # In order to do so, uncomment the following line.
    28 # You can also select to disable deprecated APIs only up to a certain version of Qt.
    29 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    30 
    31 
    32 CONFIG += c++11
    33 
    34 
    35 SOURCES += 
    36         main.cpp 
    37         mainwindow.cpp
    38 
    39 
    40 HEADERS += 
    41         mainwindow.h
    42 
    43 
    44 FORMS += 
    45         mainwindow.ui
    46 
    47 
    48 # Default rules for deployment.
    49 qnx: target.path = /tmp/$${TARGET}/bin
    50 else: unix:!android: target.path = /opt/$${TARGET}/bin
    51 !isEmpty(target.path): INSTALLS += target

    mainwindow.h

      1 #ifndef MAINWINDOW_H
      2 #define MAINWINDOW_H
      3 
      4 
      5 #include <QMainWindow>
      6 #include <QSplitter>
      7 #include <QCategory3DAxis>
      8 #include <QtDataVisualization>
      9 using namespace QtDataVisualization;
     10 
     11 
     12 namespace Ui {
     13 class MainWindow;
     14 }
     15 
     16 
     17 class MainWindow : public QMainWindow
     18 {
     19     Q_OBJECT
     20 private:
     21     QWidget *graphContainer;//图标的容器
     22     Q3DBars *graph3D;//图表
     23     QBar3DSeries *series;//图标的序列
     24     void iniGraph3D();//绘制图表
     25 public:
     26     explicit MainWindow(QWidget *parent = nullptr);
     27     ~MainWindow();
     28     
     29 private slots:
     30     void on_comboCamera_currentIndexChanged(int index);
     31     
     32     void on_sliderH_valueChanged(int value);
     33     
     34     void on_sliderV_valueChanged(int value);
     35     
     36     void on_sliderZoom_valueChanged(int value);
     37     
     38     void on_cBoxTheme_currentIndexChanged(int index);
     39     
     40     void on_cBoxBarStyle_currentIndexChanged(int index);
     41     
     42     void on_cBoxSelectionMode_currentIndexChanged(int index);
     43     
     44     void on_chkBoxBackground_clicked(bool checked);
     45     
     46     void on_chkBoxGrid_clicked(bool checked);
     47     
     48     void on_chkBoxAxisBackground_clicked(bool checked);
     49     
     50     void on_chkBoxItemLabel_clicked(bool checked);
     51     
     52     void on_chkBoxSmooth_clicked(bool checked);
     53     
     54     void on_chkBoxReverse_clicked(bool checked);
     55     
     56     void on_chkBoxReflection_clicked(bool checked);
     57     
     58     void on_chkBoxAxisTitle_clicked(bool checked);
     59     
     60     void on_spinFontSize_valueChanged(const QString &arg1);
     61     
     62     void on_spinFontSize_valueChanged(int arg1);
     63     
     64 private:
     65     Ui::MainWindow *ui;
     66 };
     67 
     68 
     69 #endif // MAINWINDOW_H
     70 #ifndef MAINWINDOW_H
     71 #define MAINWINDOW_H
     72 
     73 
     74 #include <QMainWindow>
     75 #include <QSplitter>
     76 #include <QCategory3DAxis>
     77 #include <QtDataVisualization>
     78 using namespace QtDataVisualization;
     79 
     80 
     81 namespace Ui {
     82 class MainWindow;
     83 }
     84 
     85 
     86 class MainWindow : public QMainWindow
     87 {
     88     Q_OBJECT
     89 private:
     90     QWidget *graphContainer;//图标的容器
     91     Q3DBars *graph3D;//图表
     92     QBar3DSeries *series;//图标的序列
     93     void iniGraph3D();//绘制图表
     94 public:
     95     explicit MainWindow(QWidget *parent = nullptr);
     96     ~MainWindow();
     97     
     98 private slots:
     99     void on_comboCamera_currentIndexChanged(int index);
    100     
    101     void on_sliderH_valueChanged(int value);
    102     
    103     void on_sliderV_valueChanged(int value);
    104     
    105     void on_sliderZoom_valueChanged(int value);
    106     
    107     void on_cBoxTheme_currentIndexChanged(int index);
    108     
    109     void on_cBoxBarStyle_currentIndexChanged(int index);
    110     
    111     void on_cBoxSelectionMode_currentIndexChanged(int index);
    112     
    113     void on_chkBoxBackground_clicked(bool checked);
    114     
    115     void on_chkBoxGrid_clicked(bool checked);
    116     
    117     void on_chkBoxAxisBackground_clicked(bool checked);
    118     
    119     void on_chkBoxItemLabel_clicked(bool checked);
    120     
    121     void on_chkBoxSmooth_clicked(bool checked);
    122     
    123     void on_chkBoxReverse_clicked(bool checked);
    124     
    125     void on_chkBoxReflection_clicked(bool checked);
    126     
    127     void on_chkBoxAxisTitle_clicked(bool checked);
    128     
    129     void on_spinFontSize_valueChanged(const QString &arg1);
    130     
    131     void on_spinFontSize_valueChanged(int arg1);
    132     
    133 private:
    134     Ui::MainWindow *ui;
    135 };
    136 
    137 
    138 #endif // MAINWINDOW_H

    mainwindow.cpp

      1 #include "mainwindow.h"
      2 #include "ui_mainwindow.h"
      3 
      4 
      5 MainWindow::MainWindow(QWidget *parent) :
      6 QMainWindow(parent),
      7 ui(new Ui::MainWindow)
      8 {
      9 ui->setupUi(this);
     10 iniGraph3D();
     11 QSplitter *splitter =new QSplitter(Qt::Horizontal);
     12 splitter->addWidget(ui->groupBox);
     13 splitter->addWidget(graphContainer);
     14 this->setCentralWidget(splitter);
     15 
     16 
     17 }
     18 MainWindow::~MainWindow()
     19 {
     20 delete ui;
     21 }
     22 void MainWindow::iniGraph3D()
     23 {
     24     //创建图表
     25     graph3D =new Q3DBars();
     26     graphContainer=QWidget::createWindowContainer(graph3D);
     27     //创建坐标轴
     28     QStringList rowLabs;
     29     QStringList colLabs;
     30     rowLabs<<"row1"<<"row2"<<"row3";
     31     colLabs<<"col1"<<"col2"<<"col3"<<"col4"<<"col5";
     32     QValue3DAxis *axisV=new QValue3DAxis;
     33     axisV->setTitle("value");
     34     axisV->setTitleVisible(true);
     35     QCategory3DAxis *axisRow=new QCategory3DAxis;//行坐标轴
     36     axisRow->setTitle("row axis");
     37     axisRow->setLabels(rowLabs);
     38     axisRow->setTitleVisible(true);
     39     QCategory3DAxis *axisCol=new QCategory3DAxis;//列坐标轴
     40     axisCol->setTitle("col axis");
     41     axisCol->setLabels(colLabs);
     42     axisCol->setTitleVisible(true);
     43     //将坐标轴添加到图像
     44     graph3D->setRowAxis(axisRow);
     45     graph3D->setValueAxis(axisV);
     46     graph3D->setColumnAxis(axisCol);
     47     //创建序列
     48     series =new QBar3DSeries;
     49     series->setMesh(QAbstract3DSeries::MeshCylinder);//棒状形状
     50     series->setItemLabelFormat("(@rowLabel,@colLabel):%.1f");//标签格式
     51     graph3D->addSeries(series);
     52     //添加数据
     53     QBarDataArray *dataSet=new QBarDataArray;//数据数组
     54     dataSet->reserve(rowLabs.count());
     55     QBarDataRow *dataRow=new QBarDataRow;
     56     *dataRow<<1<<2<<3<<4<<5;
     57     dataSet->append(dataRow);
     58     QBarDataRow *dataRow2=new QBarDataRow;
     59     *dataRow2<<5<<5<<5<<5<<5;
     60     dataSet->append(dataRow2);
     61     QBarDataRow *dataRow3=new QBarDataRow;
     62     *dataRow3<<1<<5<<9<<5<<1;
     63     dataSet->append(dataRow3);
     64 
     65 
     66     //为序列的数据代理设置数据
     67     series->dataProxy()->resetArray(dataSet);
     68 }
     69 
     70 
     71 /**
     72  * @brief MainWindow::on_comboCamera_currentIndexChanged
     73  * @param index
     74  */
     75 void MainWindow::on_comboCamera_currentIndexChanged(int index)
     76 {
     77     //变换视角
     78     Q3DCamera::CameraPreset cameraPos=Q3DCamera::CameraPreset(index);//将序号转换成Q3DCamera::CameraPreset类型
     79     graph3D->scene()->activeCamera()//获取当前图标视角
     80         ->setCameraPreset(cameraPos);//设置视角
     81 }
     82 
     83 
     84 void MainWindow::on_sliderH_valueChanged(int value)
     85 {
     86     Q_UNUSED(value);
     87     int xRot=ui->sliderH->value();
     88     //int yRot=ui->sliderV->value();
     89     //int zoom=ui->sliderZoom->value();
     90     graph3D->scene()->activeCamera()->setXRotation(xRot);
     91     //graph3D->scene()->activeCamera()->setYRotation(yRot);
     92     //graph3D->scene()->activeCamera()->setZoomLevel(zoom);
     93 }
     94 
     95 
     96 void MainWindow::on_sliderV_valueChanged(int value)
     97 {
     98     Q_UNUSED(value);
     99     int yRot=ui->sliderV->value();
    100     graph3D->scene()->activeCamera()->setYRotation(yRot);
    101 }
    102 
    103 
    104 void MainWindow::on_sliderZoom_valueChanged(int value)
    105 {
    106     Q_UNUSED(value);
    107     int zoom=ui->sliderZoom->value();
    108     graph3D->scene()->activeCamera()->setZoomLevel(zoom);
    109 }
    110 //修改主题
    111 void MainWindow::on_cBoxTheme_currentIndexChanged(int index)
    112 {
    113     Q3DTheme *currentTheme=graph3D->activeTheme();
    114     currentTheme->setType(Q3DTheme::Theme(index));
    115 }
    116 //修改棒图样式
    117 void MainWindow::on_cBoxBarStyle_currentIndexChanged(int index)
    118 {
    119     QAbstract3DSeries::Mesh aMesh;
    120     aMesh=QAbstract3DSeries::Mesh(index+1);
    121     series->setMesh(aMesh);
    122 }
    123 //修改选择模式
    124 void MainWindow::on_cBoxSelectionMode_currentIndexChanged(int index)
    125 {
    126     graph3D->setSelectionMode(QAbstract3DGraph::SelectionFlags(index));
    127 }
    128 //背景可见
    129 void MainWindow::on_chkBoxBackground_clicked(bool checked)
    130 {
    131     graph3D->activeTheme()->setBackgroundEnabled(checked);
    132 }
    133 //背景网络
    134 void MainWindow::on_chkBoxGrid_clicked(bool checked)
    135 {
    136     graph3D->activeTheme()->setGridEnabled(checked);
    137 
    138 
    139 }
    140 
    141 
    142 //坐标轴标签背景可见
    143 void MainWindow::on_chkBoxAxisBackground_clicked(bool checked)
    144 {
    145     graph3D->activeTheme()->setLabelBackgroundEnabled(checked);
    146 }
    147 //项的标签可见
    148 void MainWindow::on_chkBoxItemLabel_clicked(bool checked)
    149 {
    150     series->setItemLabelFormat("value at (@rowLabel,@colLabel):%.1f");
    151     series->setItemLabelVisible(checked);
    152 }
    153 //光滑
    154 void MainWindow::on_chkBoxSmooth_clicked(bool checked)
    155 {
    156     series->setMeshSmooth(checked);
    157 }
    158 //数值轴反转
    159 void MainWindow::on_chkBoxReverse_clicked(bool checked)
    160 {
    161     graph3D->valueAxis()->setReversed(checked);
    162 }
    163 //设置倒影
    164 void MainWindow::on_chkBoxReflection_clicked(bool checked)
    165 {
    166     graph3D->setReflection(checked);
    167 }
    168 //标签可见
    169 void MainWindow::on_chkBoxAxisTitle_clicked(bool checked)
    170 {
    171     graph3D->rowAxis()->setTitleVisible(checked);
    172     graph3D->columnAxis()->setTitleVisible(checked);
    173     graph3D->valueAxis()->setTitleVisible(checked);
    174 }
    175 
    176 
    177 void MainWindow::on_spinFontSize_valueChanged(const QString &arg1)
    178 {
    179 
    180 
    181 }
    182 //设置字体大小
    183 void MainWindow::on_spinFontSize_valueChanged(int arg1)
    184 {
    185     QFont font=graph3D->activeTheme()->font();
    186     font.setPointSize(arg1);
    187     graph3D->activeTheme()->setFont(font);
    188 }

    运行结果
    在这里插入图片描述

  • 相关阅读:
    【死磕Java并发】—–J.U.C之AQS(一篇就够了)
    Java并发包基石-AQS详解
    java并发api总结
    用Java对CSV文件进行读写操作
    多线程批量检测未注册域名
    RSA公钥、私钥、签名和验签
    ASCII,Unicode和UTF-8终于找到一个能完全搞清楚的文章了
    Java 常用工具类---- 各种字符集编码判断与转换
    JavaMail| JavaMail配置属性
    QT下的几种透明效果(QPalette背景白色,窗口设置setWindowOpacity,QPainter使用Clear模式绘图)
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13395376.html
Copyright © 2011-2022 走看看