給 Qt 添加模塊


 添加 Qt 模塊 QtCanvas3D

由於需要使用 Qt Quick 進行 3D 繪圖,因此在網上找了一些資料。

JS 繪制 3D 的有 ThreeJS 庫,應該可以用於 QML。繼續搜索,發現Qt 里面有一個 QtCanvas3D 模塊,可以用來進行 3D繪制。那就照着 Qt 官方教程做,首先導入該模塊

import QtCanvas3D 1.1

但是問題來了,QtCreator 提示 “QML Module not found”,原來是電腦上沒有這個模塊,那就安裝這個模塊吧。找了一圈,沒有找到比較好的安裝模塊的方法,最后找到了 GitHub 上的 qtcanvas3d 源碼地址

下載下來自己編譯應該沒什么問題。接下來談談安裝模塊的經歷。

1. 下載相應版本的 qtcanvas3d ,我用的 Qt 版本是 5.6,下載后解壓得到 qtcanvas3d-5.6 文件夾。

 

為了方便,我把它放到了 <QT Install Dir>/5.6 目錄下(這里存放的是編譯器相應配置和庫的文件夾)。

2. 打開 qtcanvas3d-5.6/src/imports/qtcanvas3d 目錄,直接用 QtCreator 打開 qtcanvas3d.pro ,得到一個 qtcanvas3d 工程

打開這個項目的屬性,把構建設置的 Shadow Build 取消掉(當然也可以指定目標位置,但是我指定后沒有編譯出相應的 dll 文件)

構建,就能在 <Qt Install Dir>/5.6/qtcanvas3d-5.6/ 目錄下得到新目錄 qml,里面存放的文件夾 QtCanvas3D 就是編譯得到的庫文件。

上圖就是我用 msvc 編譯器編譯得到的庫文件,但是把 QtCanvas3D 整個文件夾復制到 <Qt Install Dir>/5.6/msvc20xx_64/qml 目錄下,在 QtCreator 里面還是會顯示找不到 QtCanvas3D 模塊。

3. 參考官方文檔 QML Modules ,這里說明了要想添加插件,還需要兩個文件 qmldir 和 plugins.qmltypes 。這兩個文件在源代碼中就有(上圖中的 qtcanvas3d 項目中的兩個文件就是我們需要的文件), 

復制到相應的目錄,重新打開 QtCreator,再看項目,發現 “Module not found” 提示已經消失。成功導入模塊!

 

-----------------------------------------------

在添加 qtcanvas3d 庫時,犯了一個很蠢的錯誤。

我先用 MinGW 32 編譯出了庫文件,然后把庫文件復制到 <Qt Install Dir>/5.6/mingwxx_xx/qml 目錄下,但是把 qmldir 和 plugins.qmltypes 復制相應位置,還是提示我沒有找到模塊。

最后發現,我的項目是用的 msvc 編譯器,查找插件是到 msvc 相應目錄查找,難怪我怎么修改都沒有辦法把插件添加進去。最后重新用 msvc 編譯 QtCanvas3D ,放到 msvc 編譯器的插件目錄下面,就好了。

 

根據論壇里的答復,也可以自定義插件路徑,要在構建環境里添加一個 QML2_IMPORT_PATH 變量,指向相應目錄,試過這個辦法,但是沒什么用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM