前段时间在Qt事例中看到了3D图形,就参考案例,做了一个相似的demon.
不多说了,先看做的两个效果图吧。
这里主要讲解第一个,第二个的代码会打包上传。感兴趣可以下载。
工程文件:
QT += datavisualization
SOURCES += main.cpp
因为用的是3D,所以工程文件要加datavisualization。
主文件:
#include<QWidget>
#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
今天的文章Qt 数据可视化之3D图形分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/77091.html