• Qt 数据可视化之3D图形


    前段时间在Qt事例中看到了3D图形,就参考案例,做了一个相似的demon.

    不多说了,先看做的两个效果图吧。

    工程文件:

    1 QT += datavisualization
    2 SOURCES += main.cpp 

    因为用的是3D,所以工程文件要加datavisualization。

    主文件:

     1 #include<QWidget>
     2 
     3 #include <QtWidgets/QApplication>
     4 #include"init_widget.h"
     5 int main(int argc, char *argv[])
     6 {
     7     QApplication app(argc, argv);
     8     Q3DBars bars;
     9     /*init_widget init(&bars);*/
    10     bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);
    11     bars.rowAxis()->setRange(0, 4);   //设置图形坐标范围,row
    12     bars.columnAxis()->setRange(0, 4);//设置图形坐标范围,colum
    13   //其实和cahrt模块很相似,先是创建serial,在创建数据,
    14     QBar3DSeries *series = new QBar3DSeries;
    15  //创建4组数据。
    16     QBarDataRow *data = new QBarDataRow;
    17     *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
    18     QBarDataRow *data1 = new QBarDataRow;
    19     *data1 << 2.9f << 4.5f << 6.5f << 4.0f << 5.2f;
    20     QBarDataRow *data2 = new QBarDataRow;
    21     *data2 << 4.7f << 3.3f << 2.5f << 5.6f << 2.9f;
    22     QBarDataRow *data3 = new QBarDataRow;
    23     *data3 << 5.0f << 2.8f << 6.5f << 4.9 << 6.8f;
    24   //将数据添加进seiral中。
    25     series->dataProxy()->addRow(data);
    26     series->dataProxy()->addRow(data1);
    27     series->dataProxy()->addRow(data2);
    28     series->dataProxy()->addRow(data3);
    29    //将serial加入到3d对象中。
    30     bars.addSeries(series);
    31    //设置Z轴坐标
    32     QValue3DAxis *value=new QValue3DAxis;
    33     value->setTitle("Average temperature");//设置标题
    34     value->setTitleVisible(true);//记得默认是false
    35     value->setSegmentCount(3);//z轴分为3大段
    36     value->setSubSegmentCount(2);//没大段分为2个空间间隙
    37     value->setLabelFormat(QString(QStringLiteral("%.2f ") + "C"));//这个就不说了,,,
    38     value->setLabelAutoRotation(30.0f);//设置标签的角度
    39     bars.setValueAxis(value);
    40     //设置X,Y的坐标
    41     QCategory3DAxis *axis=new QCategory3DAxis;
    42     QStringList list;
    43     list<<"周一"<<"周二"<<"周三"<<"周四";
    44     axis->setLabels(list);
    45     axis->setLabelAutoRotation(30.0f);
    46     bars.setRowAxis(axis);
    47 
    48     bars.show();
    49     /*init.show_widget();*/
    50     return app.exec();
    51 }

    其实和chart模块很相似,

    1:创建3d对象,

    Q3DBars bars;

    2:创建数据串

    QBar3DSeries *series = new QBar3DSeries;

    3:添加数据

    1     QBarDataRow *data = new QBarDataRow;
    2     *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
    3     QBarDataRow *data1 = new QBarDataRow;
    4     *data1 << 2.9f << 4.5f << 6.5f << 4.0f << 5.2f;
    5     QBarDataRow *data2 = new QBarDataRow;
    6     *data2 << 4.7f << 3.3f << 2.5f << 5.6f << 2.9f;
    7     QBarDataRow *data3 = new QBarDataRow;
    8     *data3 << 5.0f << 2.8f << 6.5f << 4.9 << 6.8f;

    4.将数据添加到数据串中

    1 series->dataProxy()->addRow(data);
    2 series->dataProxy()->addRow(data1);
    3 series->dataProxy()->addRow(data2);
    4 series->dataProxy()->addRow(data3);

    5:将数据串加入到3d对象中

    bars.addSeries(series);

    6.:显示

    bars.show();
  • 相关阅读:
    查找表类算法//字母异位词分组
    查找表类算法//四数相加 II
    查找表类算法//四数相加 II
    第六章 类文件结构
    第六章 类文件结构
    查找表的算法//四数之和
    查找表的算法//四数之和
    第五章 调优案例分析与实战
    第五章 调优案例分析与实战
    C++_基础4-分支语句和逻辑运算符
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13395427.html
Copyright © 2020-2023  润新知