BB10 Cascades QML中的布局管理方式

2021-08-27 07:38:17 字數 2564 閱讀 6103

在介面設計中,開發人員除了考慮除了元件自身的外觀以外,另乙個考慮的因素就是元件的位置。

在qml中,元件擺放是通過布局管理方式實現的,其中包括兩個部分,乙個是「布局方式」,用於指定乙個容器內各個子元件的布局方式,第二個是「布局屬性」,用於指定本元件在容器中的擺放方式。

在使用qml擺放元件的時候,對以上兩個概念,就是「布局方式」和「布局屬性」,一定要有清楚的認識,調整元件位置時才能做到心中有數。如果覺的以上的概念有點混淆,可以通過以下比喻來理解。

我們用古代戰爭的步兵方陣作比喻:

「布局方式」就相當於乙個兵團使用的「陣型」,比如矩形的前進陣型,還有圓形的防禦陣型。不同的陣型對士兵有不同的要求,矩形的前進陣型要求士兵一排跟著一排面向同乙個方向,而圓形防禦陣型要求士兵圍成一圈,面向不同方向進行防守。

而「布局屬性」就相當於乙個士兵在兵團中的位置,比如在矩形的前進陣型中,要求刀盾兵第一排,劍兵第二排,矛兵第三排,那麼,我們給刀盾兵指定的「布局屬性」就是「第一排」;而在圓形防禦陣型中,可能要求甲隊朝東,乙隊朝西,丙隊朝南,丁隊朝北,那麼,我們給甲隊指定的布局屬性就是「朝東」。

很明顯,乙個士兵的「布局屬性」的取值範圍首先取決於兵團的陣型,也就是兵團的「布局方式」,讓乙個士兵在矩形前進方陣中朝東站立顯然是有問題的。所以,給士兵下達站位命令應該先說明兵團的陣型,比如這樣告訴士兵「現在是圓形防禦陣型,你朝東站立,防守東邊」。

另外,在大部隊作戰的時候,乙個大兵團有可能包括幾個小兵團。小兵團作為大兵團的一部分,需要指定它的「布局屬性」,就是它在大兵團中的位置。同時,小兵團自己作為乙個兵團,也有自己的陣型,就是自己的「布局方式」。

回到我們的qml元件擺放,首先我們要確定容器的「布局方式」,然後根據容器的「布局方式」指定乙個元件的「布局屬性」。

乙個容器的「布局方式」在「qml properties」頁面的「general」區段進行設定,在qml編輯器中將游標定位到容器那行,然後在通過「qml properties->general->layout」欄位的選擇指定乙個容器的「布局方式」。

乙個元件的「布局屬性」在「qml properties」頁面的「layout」區段進行設定,在qml編輯器中將游標定位到元件那行,然後在通過「qml properties->layout->layoutproperties」欄位的選擇父容器的「布局方式」,然後該字段的下方會出現不同的「布局屬性」供選擇,如「靠左」,「靠右」,「居中」等。

因為qml中元件可以巢狀,比如在乙個容器中加入另乙個容器,所以和上面提到的大兵團巢狀小兵團一樣,乙個嵌入到其它容器中的容器會有自己的「布局方式」,也會有「布局屬性」。這裡是最容易混淆的地方。

qml中經常使用的「布局方式」有三種,分別是stacklaylout,docklayout和absoultelayout。

stacklayout表示容器中的元件按乙個方向乙個接乙個擺放,擺放的次序和qml檔案中元件的次序相同。當我們為乙個容器選擇了stacklayout作為布局方式的時候,還可以指定stacklayout的方向是由上到下,還是右左到右。下面是乙個由上到下的stacklayout的效果:

指定了容器的「布局方式」後就可以指定元件的「布局屬性」了,比如指定上圖中的「control1」按鈕的「布局屬性」。首先在qml編輯器裡將游標定位到「control1」那個按鈕那裡,然後在「qml properties」頁面進行設定。因為父容器使用了stacklayout,我們首先在元件的「qml properties->layout->layoutproperties」中選擇stacklayout,接著在「horizontal alignment」一欄選擇「靠左」,「居中」或者「靠右」,上圖的效果是選擇「居中」的效果。注意,在上面的例子中元件是從上往下排列的,這時為乙個元件選擇「vertical alignment」,也就是垂直對齊方式,是沒有意義的。

docklayout表示容器中的元件不按qml檔案中元件的次序擺放,而是完全按照「上,中,下」,「左,中,右」的組合進行擺放。下面是乙個docklayout的效果,

其中control 1元件選擇的「布局屬性」是「垂直方向居中」,「水平方向靠左」

control 2元件選擇的「布局屬性」是「垂直方向靠上」,「水平方向靠右」

control 3元件選擇的「布局屬性」是「垂直方向靠下」,「水平方向居中」

absoultelayout表示容器不按qml檔案中元件的次序擺放,而是完全按照元件「布局屬性」中的x y 座標值進行擺放。這個大家應該比較熟悉了,就是可以自由指定元件的x, y 座標,自由擺放元件。不過開發人員工作量大一些,需要計算好元件的大小和位置。

下面是乙個absoultelayout的效果:

了解qml布局管理方式的最簡單方法就是啟動bb10 cascades環境中的qml預覽功能,一邊設定不同的屬性,一邊觀察效果。

這裡還有乙個小技巧,在使用巢狀容器時,可以給容器乙個臨時的背景色,這樣你在調整設定的時候可以清晰地看到容器的大小,調整起來就比較方便。

QML中的布局管理

qml中的布局管理 1 定位器 column,row,grid,flow1 columncolumn項用來垂直排列專案並使它們不會重疊。import qtquick2.3columnrectanglerectangle 2 rowrow項用來水平排列專案並使他們不會重疊。3 gridgrid項用來定...

Qt Qml中的布局管理

qt qml中的布局管理 qt qml中的布局管理有3套機制 1.錨布局 item元素的anchors屬性 包含x,y座標 2.定位器 定位器包括 row,column,grid,flow。定位器不會改變子元件的尺寸。定位器本身也是乙個item,可以設定其自己的錨布局。定位器可以設定add,move...

PMP中的溝通管理 相關方管理的簡單介紹

溝通 溝通三大必要素 溝通的發起方 溝通的接收方 溝通的介質。在溝通的模型中存在多種模型,基本模型為 解碼 傳遞資訊 解碼 互動溝通模型為 解碼 傳遞資訊 解碼 確認已收到 反饋 響應,相對於基本模型,互動溝通模型多了確認已收到 告知收悉 和反饋 響應,確認已收到在專案中往往表示對方明確收到資訊,而...