Qt Creator 窗體控件自適應窗口大小布局


常見的軟件窗口大小改變(最大化、手動改變時)需要窗口的部件能夠自適應布局,而在Qt的應用程序界面設計中,對於像我一樣的初學者如何實現窗口自適應調整還是要繞點彎路的。網上百度了很多,多數說的很含糊,還有很多是用程序實現的,既然已經有Qt Creator那么高集成度的工具了,我還是傾向於直接在Qt Creator中通過可視化配置的方式完成,一是所見即所得,而是效率要高不少。

Qt中如果想實現窗體內空間隨着窗體大小調整,必須使用布局管理,常用的布局管理有QHBoxLayout、QVBoxLayout、QGridLayout,空的地方使用spacer控件進行填充,因此首先將窗體空間使用布局管理典型應用如下圖所示。

image

我這里使用QGridLayout,按住Ctrl多選需要布局的窗體控件,右鍵-布局-柵格化局,根據需要進行調整。

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

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屬性設置,二是一定要設置頂級布局。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM