Q_PROPERTY 宏就是用來定義 QML 中可訪問屬性的,當你看到 NOTIFY 字樣,它後面的字段就是與屬性綁定的信號的名字。 Qt 實現了動態屬性綁定,當你爲 QML Text 的屬性 color 賦值時,實際上會調用到 QQuickText 的 setColor() 函數,也會觸發 colorChanged() 信號。
組件與動態對象
Component是由Qt框架或開發者封裝好,只暴露了必要的接口的QML類型,可以重複利用
嵌入式定義組件,Component只能包含一個頂層Item,而且在這個Item之外不能定義任何數據,除了id。
Component通常用來給一個view提供圖形化組件:
ListView ::delegate屬性就需要一個Component來指定如何顯示列表的每一個項,
ButtonStyle::background屬性也需要一個Component來指定如何繪製button的背景。
Component是從QQmlComponent繼承而來,他本身是不可見元素。定義的組件是一個新的類型,它必須被實例化以後纔可能顯示。而要實例化一個嵌入在QML文檔中定義的組件,則可以通過Loader
在單獨文件中定義組件
把一個Component單獨定義在一個QML文檔中--BusyIndicator控件
1、組件名必須和QML文件名一致2、組件名的第一個字母必須是大寫
比如:我們給顏色選擇的組件起個名字叫ColorPicker,對應的QML文件就爲ColorPicker.qml
就可以在其他的QML文檔中使用ColorPicker{...}來定義ColorPicker的實例
在單獨文件內定義組件,不需要Component對象,只有在其他QML文檔中嵌入式定義組件時才需要Component對象。