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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

qt自定义插件creator不显示_让Qt Creator更懂我们的自定义模块

發布時間:2024/9/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt自定义插件creator不显示_让Qt Creator更懂我们的自定义模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用QML模塊的方式組織軟件是個不錯的結構設計,筆者的QtQuick項目都會首先考慮QML模塊的劃分,然后以搭積木的方式完成最后的開發。

Qt Creator是開發QtQuick程序的首先IDE,因為它提供了很方便的代碼提示和JS調試。但是筆者發現,項目中經常有成員抱怨自定義模塊沒有代碼提示。這雖然不影響功能,但是卻影響開發效率和開發體驗。專為QtQuick開發的IDE居然對我們的QML模塊一無所知,這沒法忍。

這篇文章筆者將圍繞這個問題,首先介紹Qt Creator是如何做到QML代碼提示的,然后再講如何讓我們的自定義模塊也能夠支持代碼提示。

回顧何為QML模塊

QML模塊是QML庫的基本單元。具體的定義這里不贅述了,只挑幾個要點回顧一下:要成為QML模塊,必不可少的是兩個條件:和模塊名一致的文件夾名;

該文件夾下有一個qmldir文件,定義該QML模塊的模塊名(和文件夾名一致)以及其他的類型、資源。

可以有一個或多個C++編譯而成的插件(一般就是一個插件,多了會影響性能);

可以有QML文件和JS文件。

上述都是影響QML模塊功能的地方。之前我們開發QML模塊時的注意力也在這些地方。但是Qt Creator的代碼提示卻不靠這個。

qmltypes文件

Qt Creator的代碼提示靠的是后綴為qmltypes的文件。大家可以去Qt自帶的QML模塊看下,每個模塊內都有一個qmltypes文件。當我們在QML代碼中寫下import XXX時,Qt Creator就會去找XXX模塊文件夾下的qmltypes文件,然后解析,最后提供代碼提示。

要想為我們自定義QML模塊提供代碼提示,關鍵是生成這個文件。

這個文件就是個文本文件,你可以打開查看。其實理論上你可以根據語法規則手寫這個文件,但顯然不是很好的做法。

具體方法

Qt其實自帶了一個工具,位于bin目錄里的qmlplugindump,是個命令行工具,可以用來生成qmltypes文件。假設模塊名叫MyModule,具體過程如下:

1. 正常開發QML模塊,編譯好后使用windeployqt(MacOS上是macdeployqt)解決依賴。這個deploy工具如何使用請參看本專欄之前的一篇文章:陳錦明:使用CMake自動部署Qt Quick程序?zhuanlan.zhihu.com

2. 確保編譯生成的dll和qmldir等放在MyModule文件夾內,而MyModule文件夾和第1步部署后的其他QML模塊同一層級,假設都位于c:/deploy。

3. 調用qmlplugindump,基本用法是:qmlplugindump MyModule 1.0 c:/deploy -nonrelocatable -output mymodule.qmltypes,這樣就會生成mymodule.qmltypes文件。將其考到MyModule文件夾內即可。同時修改qmldir文件,加上:

typeinfo mymodule.qmltypes

此時我們的MyModule模塊就完成了。

4. 在主界面工程中,如果是CMake工程,要在CMakeLists.txt中設置QML_IMPORT_PATH這個變量,而且要確保其寫入到CMake Cache中,一般的寫法是:

set(QML_IMPORT_PATH ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "qml import path"

其中,${CMAKE_CURRENT_BINARY_DIR} 是你放置MyModule模塊的所在目錄,你也可以放在別的地方。

5. 在主界面QML代碼中,import MyModule 1.0之后,Qt Creator就能夠自動加載對應的qmltypes文件了。

注意事項

筆者在實踐中發現幾個要注意的地方,列在下面和大家分享:要使Qt Creator正確加載qmltypes文件,請確保QML_IMPORT_PATH設置正確。如果是CMake工程,請確保它寫入了CMakeCache.txt文件中。如果沒有,可以清楚CMake配置,重新CMake;

Qt的bin目錄中自帶的是Release版的qmlplugindump,它只能正確處理我們Release版的插件編譯結果,對于Debug版的是會報錯的。解決辦法有兩個:只在Release時生成。其實qmltypes文件是一樣的,Debug和Release可以復用;

自己去Qt源碼中找到qmlplugindump的源碼,然后編一個Debug版的。

可以使用CMake的add_custom_command命令將qmlplugindump的執行腳本化,這樣可以讓CMake每次編譯時自動幫我們生成(或者更新)qmltypes文件。

總結

以上是生活随笔為你收集整理的qt自定义插件creator不显示_让Qt Creator更懂我们的自定义模块的全部內容,希望文章能夠幫你解決所遇到的問題。

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