Qt Designer提供4種窗口布局方式,分別如下:
Vertical Layout(垂直布局)芋齿,控件默認(rèn)按照從上到下的順序進(jìn)行縱向添加;
Horizontal Layout(水平布局),控件默認(rèn)按照從左到右的順序進(jìn)行橫向添加样刷;
Grid Layout(柵格布局),將窗口控件放入一個網(wǎng)格之中览爵,然后將它們合理地劃分成若干行(row)和列(column)置鼻,并把其中的每個窗口控件放置在合適的單元(cell)中,這里的單元即是指由行和列交叉所劃分出來的空間蜓竹;
Form Layout(表單布局)箕母,控件以兩列的形式布局在表單中,其中左列包含標(biāo)簽俱济,右列包含輸入控件嘶是。
它們位于Qt Designer主窗口左側(cè)區(qū)域的Widget Box(工具箱)里的Layouts(布局)欄中,如下圖所示:
通常進(jìn)行布局有兩種方式:一種是通過布局管理器進(jìn)行布局蛛碌,另一種是通過容器控件進(jìn)行布局聂喇。
1、布局管理器進(jìn)行布局
以垂直布局為例蔚携,打開Qt Designer希太,新建一個QWidget控件,然后在其中放入兩個按鈕(PushButton)子控件酝蜒。
選中這兩個控件誊辉,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇"布局"的子菜單就可以指定該控件的布局方式了亡脑,此處選擇“垂直布局”堕澄,如下圖所示:
2、容器控件進(jìn)行布局
所謂容器控件霉咨,就是指能夠容納子控件的控件蛙紫。使用容器控件,目的是將容器控件中的控件歸為一類躯护,以有別于其他控件。當(dāng)然丽涩,容器控件也可以對其子控件進(jìn)行布局棺滞,只不過沒有布局管理器常用。使用容器控件最大的作用是:美觀和方便管理矢渊,例如將10個按鈕(PushButton)子控件放在同一個容器控件中继准,拖動容器控件即可同時移動10個按鈕(PushButton)子控件。
Qt Designer主窗口左側(cè)區(qū)域的Widget Box(工具箱)里的Containers(容器)欄中矮男,如下圖所示:
具體使用可參見官網(wǎng)說明移必,這里不再贅述。
從左側(cè)容器(Containers)導(dǎo)航欄拖入一個Frame控件毡鉴,F(xiàn)rame控件放置一些常用的表單崔泵、按鈕等控件秒赤,在Frame控件中放入三個Button控件,并對其進(jìn)行重命名憎瘸,還是以垂直布局入篮,如下圖所示:
此時拖動Frame控件即可便捷控制三個Button控件,并且在右側(cè)對象查看器中可見幌甘,三個Button控件對象是在Frame控件子級潮售,當(dāng)創(chuàng)建的對象較多時就非常方便管理了。
3锅风、geometry屬性:控件絕對布局
最后再聊聊絕對布局酥诽。
絕對布局方法非常簡單,在Qt Designer主窗口右側(cè)區(qū)域?qū)傩詸谀吭O(shè)置相關(guān)控件的geometry屬性即可皱埠。geometry屬性在PyQt中主要用來設(shè)置控件在窗口中的絕對坐標(biāo)與控件自身的大小肮帐。例如,以下Button控件的geometry屬性漱逸,如下圖所示:
參數(shù)說明如下所示:
X:110泪姨,按鈕控件左上角,距離主窗口左側(cè)為110px饰抒;
Y:170肮砾,按鈕控件左上角,距離主窗口上側(cè)為170px袋坑;
寬度:93仗处,按鈕控件寬度為93px;
高度:28枣宫,按鈕控件高度為28px婆誓。
示意圖如下所示:
可以隨意更改這些屬性值來查看控件在窗口中的位置變化,也可以通過更改控件在窗口中的位置及其大小來查看屬性值的變化也颤,以此更深刻地理解屬性的含義洋幻。
4、sizePolicy屬性:微調(diào)優(yōu)化控件布局
sizePolicy屬性的作用是:若窗口控件在布局管理器中的布局不能滿足我們的需求翅娶,那么就可以設(shè)置該窗口控件的sizePolicy屬性來實現(xiàn)布局的微調(diào)文留。
介紹sizePolicy屬性之前,需要先講講sizeHint和minisizeHint屬性竭沫。每個窗口控件都有屬于自己的兩個尺寸:一個是sizeHint屬性(尺寸提示)燥翅,它是窗口控件的期望尺寸;另一個是minimumSize屬性(最小尺寸)蜕提,它是窗口控件壓縮時所能夠被壓縮到的最小尺寸森书。
sizePolicy屬性也是每個窗口控件所特有的屬性,不同的窗口控件的sizePolicy可能不同。例如凛膏,以下Button控件的默認(rèn)sizePolicy屬性能犯,如下圖所示:
水平策略和垂直策略的參數(shù)解釋如下所示:
Fixed:窗口控件具有其sizeHint所提示的尺寸且尺寸不會再改變轧粟;
Minimum:窗口控件的sizeHint所提示的尺寸就是它的最小尺寸;該窗口控件不能被壓縮得比這個值小,但可以變得更大杉适;
Maximum:窗口控件的sizeHint所提示的尺寸就是它的最大尺寸蕊玷;該窗口控件不能變得比這個值大氓英,但它可以被壓縮到minisizeHint給定的尺寸大胁雎稹;
Preferred:窗口控件的sizeHint所提示的尺寸就是它的期望尺寸胯府;該窗口控件可以縮小到minisizeHint所提示的尺寸介衔,也可以變得比sizeHint所提示的尺寸還要大;
Expanding :窗口控件可以縮小到minisizeHint所提示的尺寸骂因,也可以變得比sizeHint所提示的尺寸大炎咖,但它希望能夠變得更大;
MinimumExpanding:窗口控件的sizeHint所提示的尺寸就是它的最小尺寸寒波;該窗口控件不能被壓縮得比這個值還小乘盼,但它希望能夠變得更大;
lgnored:無視窗口控件的sizeHint和minisizeHint所提示的尺寸俄烁,按照默認(rèn)來設(shè)置绸栅。