Qt 数据可视化之3D图形

Qt 数据可视化之3D图形前段时间在Qt事例中看到了3D图形,就参考案例,做了一个相似的demon.不多说了,先看做的两个效果图吧。这里主要讲解第一个,第二个的代码会打包上传。感兴趣可以下载。工程文件:QT+=datavisualizationSOURCES+=main.cpp因为用的是3D,所以工程文件要加datavisualization。主

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

不多说了,先看做的两个效果图吧。Qt 数据可视化之3D图形

Qt 数据可视化之3D图形

 

这里主要讲解第一个,第二个的代码会打包上传。感兴趣可以下载。

工程文件:

 

  
只听到从架构师办公室传来架构君的声音:
屋上春鸠鸣,村边杏花白。有谁来对上联或下联?
此代码由Java架构师必看网-架构君整理
QT += datavisualization
SOURCES += main.cpp 

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

 

主文件:

#include<QWidget>

此代码由Java架构师必看网-架构君整理
#include <QtWidgets/QApplication>
#include"init_widget.h"
int main(int argc, char *argv[])
{
  
  
    QApplication app(argc, argv);
    Q3DBars bars;
    /*init_widget init(&bars);*/
    bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);
    bars.rowAxis()->setRange(0, 4);   //设置图形坐标范围,row
    bars.columnAxis()->setRange(0, 4);//设置图形坐标范围,colum
  //其实和cahrt模块很相似,先是创建serial,在创建数据,
    QBar3DSeries *series = new QBar3DSeries;
 //创建4组数据。
    QBarDataRow *data = new QBarDataRow;
    *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
    QBarDataRow *data1 = new QBarDataRow;
    *data1 << 2.9f << 4.5f << 6.5f << 4.0f << 5.2f;
    QBarDataRow *data2 = new QBarDataRow;
    *data2 << 4.7f << 3.3f << 2.5f << 5.6f << 2.9f;
    QBarDataRow *data3 = new QBarDataRow;
    *data3 << 5.0f << 2.8f << 6.5f << 4.9 << 6.8f;
  //将数据添加进seiral中。
    series->dataProxy()->addRow(data);
    series->dataProxy()->addRow(data1);
    series->dataProxy()->addRow(data2);
    series->dataProxy()->addRow(data3);
   //将serial加入到3d对象中。
    bars.addSeries(series);
   //设置Z轴坐标
    QValue3DAxis *value=new QValue3DAxis;
    value->setTitle("Average temperature");//设置标题
    value->setTitleVisible(true);//记得默认是false
    value->setSegmentCount(3);//z轴分为3大段
    value->setSubSegmentCount(2);//没大段分为2个空间间隙
    value->setLabelFormat(QString(QStringLiteral("%.2f ") + "C"));//这个就不说了,,,
    value->setLabelAutoRotation(30.0f);//设置标签的角度
    bars.setValueAxis(value);
    //设置X,Y的坐标
    QCategory3DAxis *axis=new QCategory3DAxis;
    QStringList list;
    list<<"周一"<<"周二"<<"周三"<<"周四";
    axis->setLabels(list);
    axis->setLabelAutoRotation(30.0f);
    bars.setRowAxis(axis);

    bars.show();
    /*init.show_widget();*/
    return app.exec();
}

其实和chart模块很相似,

 

1:创建3d对象,

 

Q3DBars bars;

2:创建数据串

 

 

QBar3DSeries *series = new QBar3DSeries;

3:添加数据

 

 

    QBarDataRow *data = new QBarDataRow;
    *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
    QBarDataRow *data1 = new QBarDataRow;
    *data1 << 2.9f << 4.5f << 6.5f << 4.0f << 5.2f;
    QBarDataRow *data2 = new QBarDataRow;
    *data2 << 4.7f << 3.3f << 2.5f << 5.6f << 2.9f;
    QBarDataRow *data3 = new QBarDataRow;
    *data3 << 5.0f << 2.8f << 6.5f << 4.9 << 6.8f;

 

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

 

    series->dataProxy()->addRow(data);
    series->dataProxy()->addRow(data1);
    series->dataProxy()->addRow(data2);
    series->dataProxy()->addRow(data3);

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

 

 

bars.addSeries(series);

 

 

 

6.:显示

bars.show();

 

 

代码地址: https://gitee.com/kamenqing/Three_d_Demon.git

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

架构君码字不易,如需转载,请注明出处:https://javajgs.com/archives/211986
0
   

发表评论