QT窗體控件自適應大小

介紹QT中的幾種常見佈局

常用的佈局方法:

(1)使用水平佈局類QHBoxLayout;

(2)使用垂直佈局類QVBoxLayout;

(3)使用網格佈局類QGridLayout;

(4)使用表格佈局類QFormLayout;

(5)使用分組佈局類QStackLayout(QStackedLayout類把子控件進行分組或者分頁,一次只顯示一組或者一頁,隱藏其他組或者頁上的控件)。

當整體的佈局完成以後控件就可以跟着界面放大縮小了

要想是控件根據窗體進行調整,最爲重要的一點就是設置窗口部件的大小策略,各控件均有這一項設置,如下圖所示。

在這次項目中,當時沒有對兩個窗體設置最小大小,以及策略,結果每次佈局都會縮小最小或者佈局很難看。

image

這部分具體的參數解釋摘錄如下:

結合控件的SizePolicy屬性,來控制佈局管理中的控件的尺寸自適應方式。

控件的sizePolicy說明控件在佈局管理中的縮放方式。Qt提供的控件都有一個合理的缺省sizePolicy,但是這個缺省值有時不能適合所有的佈局,開發人員經常需要改變窗體上的某些控件的sizePolicy。一個QSizePolicy的所有變量對水平方向和垂直方向都適用。下面列舉了一些最長用的值:

A. Fixed:控件不能放大或者縮小,控件的大小就是它的sizeHint。

B. Minimum:控件的sizeHint爲控件的最小尺寸。控件不能小於這個sizeHint,但是可以

放大。

C. Maximum:控件的sizeHint爲控件的最大尺寸,控件不能放大,但是可以縮小到它的最小

的允許尺寸。

D. Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者縮小

E. Expandint:控件可以自行增大或者縮小

注:sizeHint(佈局管理中的控件默認尺寸,如果控件不在佈局管理中就爲無效的值)

所以對於需要根據窗口大小對應改變的部件我這裏就設置爲Expandint。

在部件大小策略的下方還有伸縮因子的設置,用於設置窗口部件在伸縮過程中的對應比例,這部分可以自行摸索。

要想實現隨着窗口自動縮放,很重要的一點是需要設置頂級佈局,對於一個窗口來說,只能有一個佈局成爲它的頂級佈局,而剛剛的設置還只是控件之間的佈局,因此需要放入窗體佈局中進行佈局。

在沒有控件的地方右擊-佈局-在狀體佈局中佈局,如下圖所示:

image

接下來把需要佈局的佈局拖放到窗體佈局中,這兒可以在右側對象中選擇,然後將控件向上拖入紅框中(發現這一步不做也可以,直接進行下一步,不清楚在窗體佈局中佈局這項是啥區別),最後再在窗體沒有控件出右擊-佈局-選擇水平或者垂直佈局(因爲我之前已經是柵格佈局了,相當於只有一個整體佈局,因此這裏選擇哪一個沒有區別)下圖是操作前後對象窗口的對比。

imageimage

佈局完成後效果如下:

image

到這兒,窗體就可以自由縮放了,由於我這裏是使用label控件顯示圖像,因此窗體大小調整,圖像會自動調整。

總結:一開始繞彎主要在兩個地方,一個是控件的SizePolicy屬性設置,二是一定要設置頂級佈局。

最終實現佈局成品,最小大小是這個樣子

點擊右上角方法按鈕後

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章