Qt Creator 窗體控制項自適應視窗大小布局

2021-07-13 13:37:15 字數 2126 閱讀 8711

qt 的詳細介紹:請點這裡

:請點這裡

推薦閱讀:

ubuntu 環境下gtk與qt編譯環境安裝與配置

linux系統下qt環境搭建

ubuntu下qt控制台程式無法執行的解決方案以及xterm的配置方法

ubuntu 10.04下qt4.7.4移植詳解

linux下為剛安裝好的qt creator 建立桌面啟**標

ubuntu 11.04安裝qt creator 2.5.0

qt creator for playbook安裝過程

qt中如果想實現窗體內空間隨著窗體大小調整,必須使用布局管理,常用的布局管理有qhboxlayout、qvboxlayout、qgridlayout,空的地方使用spacer控制項進行填充,因此首先將窗體空間使用布局管理典型應用如下圖所示。

我這裡使用qgridlayout,按住ctrl多選需要布局的窗體控制項,右鍵-布局-柵格化局,根據需要進行調整。

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

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

結合控制項的sizepolicy屬性,來控制布局管理中的控制項的尺寸自適應方式。

控制項的sizepolicy說明控制項在布局管理中的縮放方式。qt提供的控制項都有乙個合理的預設sizepolicy,但是這個預設值有時不能適合所有的布局,開發人員經常需要改變窗體上的某些控制項的sizepolicy。乙個qsizepolicy的所有變數對水平方向和垂直方向都適用。下面列舉了一些最長用的值:

a. fixed:控制項不能放大或者縮小,控制項的大小就是它的sizehint。

b. minimum:控制項的sizehint為控制項的最小尺寸。控制項不能小於這個sizehint,但是可以

放大。c. maximum:控制項的sizehint為控制項的最大尺寸,控制項不能放大,但是可以縮小到它的最小

的允許尺寸。

d. preferred:控制項的sizehint是它的sizehint,但是可以放大或者縮小

e. expandint:控制項可以自行增大或者縮小

注:sizehint(布局管理中的控制項預設尺寸,如果控制項不在布局管理中就為無效的值)

所以對於需要根據視窗大小對應改變的部件我這裡就設定為expandint。

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

要想實現隨著視窗自動縮放,很重要的一點是需要設定頂級布局,對於乙個視窗來說,只能有乙個布局成為它的頂級布局,而剛剛的設定還只是控制項之間的布局,因此需要放入窗體布局中進行布局。

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

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

布局完成後效果如下:

到這兒,窗體就可以自由縮放了,由於我這裡是使用label控制項顯示影象,因此窗體大小調整,影象會自動調整。

總結:一開始繞彎主要在兩個地方,乙個是控制項的sizepolicy屬性設定,二是一定要設定頂級布局。

Qt Creator 窗體控制項自適應視窗大小布局

qt中如果想實現窗體內空間隨著窗體大小調整,必須使用布局管理,常用的布局管理有qhboxlayout qvboxlayout qgridlayout,空的地方使用spacer控制項進行填充,因此首先將窗體空間使用布局管理典型應用如下圖所示。我這裡使用qgridlayout,按住ctrl多選需要布局的...

Qt Creator 窗體控制項自適應視窗大小布局

qt中如果想實現窗體內空間隨著窗體大小調整,必須使用布局管理,常用的布局管理有qhboxlayout qvboxlayout qgridlayout,空的地方使用spacer控制項進行填充,因此首先將窗體空間使用布局管理典型應用如下圖所示。我這裡使用qgridlayout,按住ctrl多選需要布局的...

Qt Creator 窗體控制項自適應視窗大小布局

qt中如果想實現窗體內空間隨著窗體大小調整,必須使用布局管理,常用的布局管理有qhboxlayout qvboxlayout qgridlayout,空的地方使用spacer控制項進行填充,因此首先將窗體空間使用布局管理典型應用如下圖所示。我這裡使用qgridlayout,按住ctrl多選需要布局的...