天天看點

QML掌握Item



使用

QML

,掌握

Item

元素的用法是非常有必要的,為什麼這麼說呢?因為

QML

中所有的可視化元素都繼承自

Item

,而

Item

則定義了一些基本的、通用的屬性和方法。這裡的“可視化”需要特别說明一下,并不是所有的可視化元素都是可見的,比如說

Rectangle

繼承自

Item

,本身是可見的,但是如果将其

opacity

透明度屬性設定為

或者是其它的什麼原因,就變成不可見的了,不過還是實實在在存在于

UI

界面的,再比如說

Timer

就不是可視化元素,而是一種資源。

QML 中的 Item 元素與 C++ 中的 QQuickItem 類對應,其它的元素類似,比如說 Rectangle 元素對應于 QQuickRectangle 類,基于 Qt 的開源性,我們可以在 Qt 源碼中檢視 QQuickItem 是如何實作的。 Item 繼承自 QtObject , QtObject 很簡單,隻有一個 objectName 屬性,類型是 string ,當 QML 與 C++ 混合程式設計時,通常要在 C++ 中查找 QML 對象,用到的就是 objectName 這個屬性,用法将在後面的《 QML 與 C++ 混合程式設計》中詳細介紹。

下面對 Item 常用的屬性做一個簡單的介紹~~

activeFocus : bool 值,隻讀,隻讀屬性就不要嘗試指派了,否則會出錯的,表明目前元素是否有活動焦點,與鍵盤事件有關,通過 focus 擷取屬性值。

focus : bool 值,預設 false ,設定元素是否有焦點區以接收鍵盤事件。

activeFocusTab : bool 值,預設 false ,與 Tab 鍵有關,設定目前元素是否在 Tab 鍵焦點範圍内。

anchors :組屬性,用于布局,用法将在後面的《 QML UI 布局》中詳細介紹。

antialiasing : bool 值,預設 false ,設定抗鋸齒效果。

baselineOffset : int 類型,在目前坐标系下設定基準位置。

data : list<Object> 類型,預設屬性,預設屬性也就沒必要顯式地把關鍵字寫出來,是可以省略的,作為一個對象清單,自動把可視化元素加到了 children 元素清單中,把其它的對象則加到了 resources 對象清單中。

children : list<Item> 類型,參照 data 屬性。

resources : list<Object> 類型,參照 data 屬性。

childrenRect :組屬性,有 x 、 y 、 width 、 height 四個屬性,都是 real 類型,隻讀,疊加了子元素的位置和大小。

clip : bool 值,預設 false ,設定為 true 時将剪切子元素。

enabled : bool 值,預設 true ,設定為 false 時将不再響應滑鼠和鍵盤事件,對子元素也有影響。

visible : bool 值,預設 true ,設定為 false 時元素不可見,不能響應滑鼠事件,但可以處理鍵盤事件。

opacity : real 類型,預設為 1 ,可以在 0.0 到 1.0 之間設定元素的透明度,會影響子元素的顯示效果,但不改變子元素的 opacity 值,為 0 時完全透明但不影響事件處理。

visibleChildren : list<Item> 類型,隻讀,會受到 visible 的影響。

height/width : real 類型,設定元素的大小。

implicitHeight/implicitWidth : real 類型,大多數元素預設為 0x0 ,比如說 Rectangle ,用來設定元素的自然大小,但有些元素是不一樣的,比如說 Text 的這對屬性是隻讀的。

layer :組屬性,設定圖層效果,常與 OpenGL 結合。

parent : Item 類型,可用來設定目前元素的父對象。

rotation : real 類型,預設為 0 ,設定元素旋轉角度,值為正時順時針旋轉,為負時逆時針旋轉。

scale : real 類型,預設為 1 ,設定元素顯示比例,值為負時有鏡像效果。

smooth : bool 類型,預設 true ,主要用于圖像。

state : string 類型,預設為空字元串,如果設定了 state 也可以用空字元串來指派以恢複預設狀态。

states : list<State> 類型,狀态清單。

transform : list<Transform> 類型, Transform 清單, Transform 包括了 Rotation 、 Scale 和 Translate 。

transformOrigin :枚舉類型,預設為 Item.Center ,設定 scale 、 rotation 變換原點,枚舉值包括 Item.TopLeft/Top/TopRight/Left/Center/Right/BottomLeft/Bottom/Bottom Right。

繼續閱讀