一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

前段时间在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();

 

posted on 2020-07-29 09:59  一杯清酒邀明月  阅读(3019)  评论(1编辑  收藏  举报