1. 程式人生 > >QML與C++整合簡述

QML與C++整合簡述

QML的解釋引擎集成了Qt的元物件系統,允許實現QML與C++混合程式設計。

整合QML和C++可以實現以下目的:

(1)分離使用者互動介面和後端應用邏輯程式碼;

(2)在QML中呼叫C++函式功能(資料模型或第三方的C++庫);

(3)通過C++實現自定義的QML object types;

為了在QML中呼叫C++函式功能,必須定義QObject派生類的C++類,類定義好之後就可以在QML中以以下三種方式呼叫:

(1)C++類註冊成一個例項化的QML type物件,在QML中以QML object types形式呼叫;

(2)C++類註冊成一個非例項化的QML type(比如Singleton-type

),在QML中不需要例項化物件就可以訪問其屬性、方法和訊號;

(3)C++類的例項作為 context property 或context object 嵌入到QML中,可以訪問其屬性、方法和訊號;

當然,QML模組也可以在C++中呼叫,因為所有的QML object types都是QObject的派生類,也就意味著所有的QML object types都可以在C++中通過Qt的元物件系統動態建立和呼叫,但並不推薦這樣使用,因為這樣又使前端UI與後端資料和邏輯又混在一起。