日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt文档阅读笔记-Custom Items Example解析

發布時間:2025/3/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。