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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM