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

附:另一篇介紹

Qt 佈局管理器 基礎學習是本文要介紹的內容,學習Qt的時候,參照幫助手冊和相關書籍,其中的例子幾乎都是手動的編寫代碼。至於方便設計界面的Qt designer的例子幾乎就沒有,想在designer中實現子窗口隨主窗口大小變化而變化,整的我鬱悶了老半天,後來閱讀Qt designer英文手冊,才找到了解決的方法,在此和大家一起分享。下述文字是幫助的英文翻譯和個人感悟。

1.Qt佈局管理器的簡介

Qt Designer 是一個可視化的基於 Qt 的用戶界面設計工具。用來生成 ui 定義文件,而不考慮具體的語言。很好使用,掌握其中的佈局管理是學習好Qt Designer的關鍵。

佈局管理器——在創建的窗口中,爲了方便地管理其中的控件,而誕生了佈局管理器

將各種控件按照實際需要,放在佈局管理器中,可以方便地對其進行管理。此後,窗口大小變化時,其將會自動進行調整變化。

如果你將自己創建的控件放在了佈局管理器中,那麼再想手工的改變控件的大小時就不有自主了。因爲佈局管理器已經掌控了你的控件,自動替你進行管理了,不需要你進行移動和調整大小了。

如果你覺着佈局管理器管理的不夠好,那麼你可以通過“breaking layouts”來打破原來的佈局,自己重新手工佈局也行。

此處,我們重點只是討論Qt designer的佈局管理器的使用。

2.Qt designer 佈局管理器的使用方法

首先,選中控件,右擊之後,彈出的快捷菜單中包括:

HorizontalLayouts and Vertical Layouts,水平和垂直佈局;

The Grid Layout ,網格佈局;

Splitter Layouts,分割器佈局;

The Form Layout,窗體佈局。

其中每個佈局效果到底怎麼樣,我建議大家自己去實踐,來回地試一試就會找到感覺。一般常常使用的是

  1. HorizontalLayouts and Vertical Layouts和The Grid Layout  

下邊通過一個簡單的例子來說明。首先在Qt Designer中創建一個MainWindow主窗口,然後在其中添加一個Label和一個Table Widget控件,最終效果如圖1-1所示。

Qt 佈局管理器 基礎學習

圖1-1 佈局前界面

其次,選中兩個控件,右擊,彈出快捷菜單,如圖1-2所示。

Qt 佈局管理器 基礎學習

圖1-2 設置佈局的快捷菜單

再次,選擇Lay Out Vertically選項,效果如圖1-3所示。

Qt 佈局管理器 基礎學習

圖1-3 選擇控件佈局後

然後,單擊選中主窗口(注意是單擊主窗口,先取消對所有控件的選擇,只選中主窗口),右擊之,在彈出的快捷菜單中選擇“Lay Out Vertically”,建立頂級佈局管理器。如圖1-4所示。

圖1-4 設置頂級佈局管理器

Qt 佈局管理器 基礎學習

到此爲止,已經完成。保存之後,按Ctrl+R組合鍵,查看結果,最大化主窗口,觀察效果哦。呵呵…注意,要想達到預想的效果,頂級佈局管理器的設置是必不可少的哦


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