QML外掛程式擴充套件(一)

2021-09-25 03:34:31 字數 1893 閱讀 6208

準備分兩節來介紹qml擴充套件外掛程式,分別為

(一)基於qml檔案的擴充套件方式

(二)基於c++的外掛程式擴充套件

這篇先介紹基於qml的外掛程式擴充套件。

qmldir: 用於組織自定義的qml外掛程式,qmldir的具體寫法可參考

.qmltypes:qml外掛程式的解釋檔案,用於qtcreator語法高亮。可通過qt提供的工具qmlplugindump自動生成

qml_import_path: 匯入外掛程式路徑,以支援外掛程式的語法高亮。個人理解是如果純qml檔案的擴充套件,沒有封裝到c++中,則直接匯入路徑,即可支援語法高亮,如果有c++封裝,則需要通過.qmltypes支援高亮。

addimportpath: 新增import定址目錄,c++**裡新增,沒有前兩項,只是qtcreator不能高亮,沒有這種,則外掛程式無法使用。

1.建立工程,首先通過qtcreator建立乙個qmlplugintest子目錄工程:

3.新建qml外掛程式工程,myplugin

4.新建嚮導會自動建立示例檔案及外掛程式名稱,這裡可自己修改uri名稱,即你的外掛程式名稱

5.自動建立的myplugin生成目錄結構如圖:

其中qmldir檔案描述的外掛程式的組成:

module myplugin

plugin qmlplugin
6.這節只介紹純qml的外掛程式方式,先不管自動生成的外掛程式檔案。

7.在myplugin目錄下,新增擴充套件qml,這裡新增乙個測試矩形,myrect.qml

8.在qmldir中新增myrect.qml,

預設建立時qml_import_path =,沒有賦值,修改為外掛程式的路徑,建議這裡使用相對路徑

qml_import_path = $$pwd/../

3.關閉qtcreator,重新開啟,可以紅色波浪線麼有了

4.在main.qml中,使用建立的myrect

所以需在c++中新增importpath,**如下:

engine.addimportpath("e:/t/qmlplugin/qmlplugintest/");(注意這裡匯入路徑是myplugin的上層資料夾,不是myplugin資料夾)

engine.load(qurl(qstringliteral("qrc:/main.qml")));

6.最後的程式目錄結構:

附錄:1.程式生成路徑:e:\t\qmlplugin\build

**:

QML外掛程式擴充套件(一)

準備分兩節來介紹qml擴充套件外掛程式,分別為 一 基於qml檔案的擴充套件方式 二 基於c 的外掛程式擴充套件 這篇先介紹基於qml的外掛程式擴充套件。qmldir 用於組織自定義的qml外掛程式,qmldir的具體寫法可參考 qmltypes qml外掛程式的解釋檔案,用於qtcreator語法...

QML外掛程式擴充套件(一)

qml外掛程式擴充套件 一 準備分兩節來介紹qml擴充套件外掛程式,分別為 一 基於qml檔案的擴充套件方式 二 基於c 的外掛程式擴充套件 這篇先介紹基於qml的外掛程式擴充套件。qmltypes qml外掛程式的解釋檔案,用於qtcreator語法高亮。可通過qt提供的工具qmlplugindu...

QML外掛程式擴充套件(二)

上一節介紹了純qml的外掛程式擴充套件方式,這種擴充套件方式基本滿足大部分的擴充套件需求,下面開始介紹比較小眾的基於c 的擴充套件 1.更新myplugin工程下的qmldir檔案,加入plugin myplugin,其中myplugin是外掛程式的動態庫名稱,在windows下對應myplugin...