Qt文档阅读笔记-Custom Items Example解析
这个实例展示了在图中添加自定义item。并且演示了如何去移动。
Obj网格文件添加到资源文件中。
注意:一般是在meshes上增加纹理,这里可以直接用QImage添加一个单独的颜色。
QImage color = QImage(2, 2, QImage::Format_RGB32);
color.fill(Qt::red);
通过QVector3D这个变量去设置这个位置
QVector3D positionOne = QVector3D(39.0f, 77.0f, 19.2f);
通过QCustom3DItem创建网格。
QCustom3DItem *item = new QCustom3DItem(":/items/oilrig.obj", positionOne,QVector3D(0.025f, 0.025f, 0.025f),QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, 45.0f),color);
在graph中添加这个item
m_graph->addCustomItem(item);
使用removeCustomItemAt()移除某个位置的item
m_graph->removeCustomItemAt(positionOne);
这里要注意:移除了会会自动调用delete,如果不想释放想让其保留,可以使用releaseCustomItem()
下面对程序进行部分解析:
这里在pri文件中可以看到,使用了Qml和quick。
而在我们自己写的代码中没有使用到Qml和quick。如果去掉,程序不会发现编译问题,但运行会有问题。个人觉得是Qt里面3D相关的,使用了qml。会调用GPU来构建画面。
Q3DSurface:提供渲染3D平面图的方法。
下面是如果构造一个小型Q3DSurface图:
第一步把graph设置为最顶层window图
Q3DSurface surface;
surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint);
这样就可以接收数据并渲染了,下面是创建几个item
QSurfaceDataArray *data = new QSurfaceDataArray;
QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;
QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;
填充数据:
*dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);
*dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);
*data << dataRow1 << dataRow2;
创建一个连续的集合存放data数据
QSurface3DSeries *series = new QSurface3DSeries;
series->dataProxy()->resetArray(data);
surface.addSeries(series);
最后是展示:
surface.show();
完整代码如下:
#include <QtDataVisualization>using namespace QtDataVisualization;int main(int argc, char **argv)
{QGuiApplication app(argc, argv);Q3DSurface surface;surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint);QSurfaceDataArray *data = new QSurfaceDataArray;QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;*dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);*dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);*data << dataRow1 << dataRow2;QSurface3DSeries *series = new QSurface3DSeries;series->dataProxy()->resetArray(data);surface.addSeries(series);surface.show();return app.exec();
}
Qt文档阅读笔记-Custom Items Example解析相关推荐
- Qt文档阅读笔记-Broadcast Sender Example解析
此例子展示了使用Qt Network API发送广播包 程序结构如下: 代码如下: sender.h #ifndef SENDER_H #define SENDER_H#include <QWi ...
- Qt文档阅读笔记-Broadcast Receiver Example解析
这篇博文的例子是说明如何在局域网上搭建广播包接收端. 这里使用了Qt Network API,搭建本地广播包接收端. 结构如下: 代码如下: receiver.h #ifndef RECEIVER_H ...
- Qt文档阅读笔记-Object Model初步解析
对象模型 标准C++对象模型提供了对象范式在运行时的高效性.但是他的一些静态性质在某些领域是不灵活的.在GUI程序中不仅要运行时的高效还需要较高的灵活性.Qt对象模型不急结合了C++运行时的高效并且还 ...
- Qt文档阅读笔记-GridLayout QML Type解析与实例
目录 基本概念 代码与实例 基本概念 如果QGridLaout大小被调整,所有item的布局都将会重新排列.和widget的QGridLayout一样.如果想要一行或一列的布局可以使用RowLayou ...
- Qt文档阅读笔记-Image QML官方解析与实例
目录 官方解析 博主例子 官方解析 Image Image用于展示图片. 使用source属性可以使用URL指定一张图片. 只要是Qt能打开的图片都支持,如果要展示动态图,要使用:BnimatedSp ...
- Qt文档阅读笔记-Widgets Tutorial官方解析及实例
目录 官方解析 博主栗子 官方解析 QWiget通常作为其他窗口的容器,可以使用QWidget到达最小代价定义自定义控件(经验:通常可以采用子类QLabel做成自定义控件) 可以通过构建他的父类对象来 ...
- Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例
目录 官方解析 博主例子 官方解析 easingCurve:QEasingCurve 这个属性保留了动画的缓和曲线. 他定义了缓和取消,默认情况下,使用线性缓和曲线,产生线性插入值.下面举出其他曲线的 ...
- Qt文档阅读笔记-编写应用脚本解析与实例
目录 官方解析 博主例子 官方解析 编写应用脚本 Qt提供了JavaScript脚本对应用程序的支持.下面将全方位说明JavaScript在Qt中的应用. Scripting Classes 如下的类 ...
- Qt文档阅读笔记-Object Trees Ownership解析与实例(为何某些程序在被关闭的时候会崩溃)
目录 官方解析 Construction/Destruction Order of QObjects 博主栗子 继承里面构造函数与析构函数的顺序 在Qt中,object trees里面的创建与析构 [ ...
最新文章
- 融云发送图片消息_发送消息
- h2 迁移到 mysql_[saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
- Linux内核链表深度分析【转】
- 转载: 快速理解Docker - 容器级虚拟化解决方案
- 腾讯在线教育小程序开发实践之路
- windows命令提示符_如何个性化Windows命令提示符
- ReverseFind
- html段落前的空格,HTML空格:空格前后
- FairScheduler的任务调度机制——assignTasks
- Android 音视频深入 十九 使用ijkplayer做个视频播放器(附源码下载)
- hdu1536 S-Nim(博弈)
- 使用 docker 来安装 oracle 11c
- Ubuntu 19.04 缺少libpng12.so.0
- 《Java性能优化权威指南》读书笔记
- Web前端基础学习——HTML5基础
- 十大经典排序算法(冒泡、选择、插入、希尔、快排..........)
- 软考中级-数据库系统工程师复习知识点汇总
- OpenBmc开发13:添加传感器(fan)
- java scriptrunner,java使用ScriptRunner执行sql文件
- 【NodeJs-5天学习】第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql