由於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 開發的速度,提高效率。高效的 編輯器或者 ...