QML實戰筆記4 QML和C 混合程式設計

2021-09-25 08:06:29 字數 862 閱讀 7503

在qml中呼叫c++

1.首先建立c++類

如果想在qml中使用c++列舉,可以使用q_enums巨集將該列舉註冊到元物件系統中。

如:

enum color

;q_enums(color)

如果想通過元物件系統訪問c++類的屬性,可以使用q_property。如:

q_property(qcolor color read color write setcolor notify colorchanged)

//read: 宣告乙個讀取屬性的函式

//write:[可選]宣告乙個設定屬性的函式

//notify:[可選]給屬性關聯乙個訊號,該訊號必須是在類中已經宣告過的

在定義乙個類的成員函式時使用q_invokable巨集來修飾,可讓該方法被元物件系統呼叫。這個巨集必須放在返回型別前面。如:

q_invokable color selectedcolor() const;
2.在qml中呼叫c++,可以註冊乙個qml模型(單例模型),也可以在c++中直接建立物件。

方法一:註冊模型

int main(int argc, char *ar**)

在qml檔案中匯入包。

import qt.an.color 1.0
建立c++物件。

color
方法二:在c++中建立物件,qml中無須再建立

int main(int argc, char *ar**)

C 和QML混合程式設計 下 C 中呼叫QML

c 中呼叫qml,主要通過呼叫qml物件成員,方法以及與qml訊號關聯 item 為了能夠在c 中訪問qml定義的成員變數somevalue,可以使用qqmlproperty的read 和write qobject setproperty 和qobject property 在main.cpp中 q...

QML和C 混合程式設計 (一)

本教程介紹在c 應用程式中擴充套件使用qml。著重介紹了qml的核心特性 如屬性 訊號和槽。還有通過外掛程式來銷毀這些擴充套件。翻譯來自qt的官方的英文教程。qt qml 提供了一些api,使得可以通過c 進行擴充套件。你可以自行書寫這些擴充套件,來增加到你自己的qml型別中。簡而言之,qml的型別...

qml與c 混合程式設計之簡單demo說明

最近接觸qml,感覺非常kuo,demo中實現乙個按鍵,名為open,功能就是開啟檔案,很簡單。開啟過程是c 幹事,介面是qml寫的。qml與c 混合程式設計不清楚的,可以看我前面一篇文件。file.h ifndef file h define file h include class test f...