Qt C 屬性型別提供給 QML呼叫(一)

2021-08-20 07:22:21 字數 1211 閱讀 4673

由於qml引擎與qt元物件系統的緊密整合,任何由qobject派生出來的類其公有的介面或屬性都可以從qml**中輕鬆訪問,並且改動的地方很少,就可以讓c++**定義的功能輕鬆擴充套件qml。

任何qml**都可以訪問qobject派生類的例項的以下成員:

另外,如果用q_enums宣告了列舉,那麼列舉也是可以直接呼叫的。

通常來說,qobject類派生於qml型別系統中,都可以從qml訪問,但是如果要訪問其他型別資訊的方式使用某個類,例如,如果該類本身將用作方法引數或屬性,那麼該類需要註冊才能使用,後期將會寫相關的文章進行介紹。

要想在 qml中呼叫到 c++的屬性,就需要用到q_property巨集,該巨集就是將 c++屬性暴露給qml 呼叫。

下面來看個簡單示例:

首先新建乙個類繼承於 qobject

#include 

class

student : public qobject

void setname(const

qstring & name)

}qstring getname() const

signals:

void signamechanged(qstring

name);

private:

qstring m_name;

};

該類中用q_property巨集將 name 屬性暴露出來供 qml 呼叫。

然後在 main 函式中進行上下文屬性註冊

int main(int argc, char *argv)

然後在 qml 中進行呼叫

visible: true

width: 640

height: 480

label

connections

}component.oncompleted: }

為了與qml實現最大的互操作性,任何可寫的屬性應該有乙個關聯的notify訊號,每當屬性值發生變化時就會發出。

在頁面載入完成後component.oncompleted中去修改 student 的屬性,這時候會自動觸發訊號signamechanged,這裡將訊號連線起來,看看輸出效果:

qml: student name changed xiaoming
這就從 qml 輕鬆的呼叫到了 c++ 中的屬性。

提供給它的預設值

預設的引數是乙個函式的引數有乙個提供給它的預設值。如果使用者不提供此引數的值,將使用預設值。如果使用者提供的預設引數值,使用使用者提供的價值。考慮下面的程式 1 2 3 4 5 6 7 8 9 10 11 12 voidprintvalues intnvalue1,intnvalue2 10 int...

提供給外部呼叫的介面設計原則

1 介面入參 出參和介面名應擁有統一的命名規範,要做到見名知意。2 不要做大而全的介面,要盡量保持介面的功能單一 好處 這樣有利於介面除錯 改造公升級和維護 3 介面出參應含有介面呼叫結果資訊 code 和 message 字段 4 介面出參應對同型別 單條,多條,分頁 的資料有固定相同的格式 好處...

提供給開發者 10 款最好的 Python IDE

python 非常易學,強大的程式語言。python 包括高效高階的資料結構,提供簡單且高效的物件導向程式設計。python 的學習過程少不了 ide 或者 編輯器,或者整合的開發編輯器 ide 這些 python 開發工具幫助開發者加快使用 python 開發的速度,提高效率。高效的 編輯器或者 ...