給 Qt 添加模塊

 添加 Qt 模塊 QtCanvas3D

因爲須要使用 Qt Quick 進行 3D 繪圖,所以在網上找了一些資料。html

JS 繪製 3D 的有 ThreeJS 庫,應該能夠用於 QML。繼續搜索,發現Qt 裏面有一個 QtCanvas3D 模塊,能夠用來進行 3D繪製。那就照着 Qt 官方教程作,首先導入該模塊git

import QtCanvas3D 1.1

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

下載下來本身編譯應該沒什麼問題。接下來談談安裝模塊的經歷。canvas

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

 

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

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

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

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

上圖就是我用 msvc 編譯器編譯獲得的庫文件,可是把 QtCanvas3D 整個文件夾複製到 <Qt Install Dir>/5.6/msvc20xx_64/qml 目錄下,在 QtCreator 裏面仍是會顯示找不到 QtCanvas3D 模塊。htm

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 變量,指向相應目錄,試過這個辦法,可是沒什麼用。

相關文章
相關標籤/搜索