Qt文档阅读笔记-Custom Items Example解析
生活随笔
收集整理的這篇文章主要介紹了
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文档阅读笔记-Qt工作笔记-QTab
- 下一篇: Spring Boot笔记-jQuery