Qt 的幾個核心機制總結之 布局(QWidget可以設置setSizePolicy,而QSizePolicy有Fixed,minimum,maximum,preferred,expanding,ignore等7個屬性,還可以橫豎分開)


1.Qt布局的作用

Qt的布局是通過布局管理器來實現的,布局管理器負責在父類窗口部件區域構建子窗口部件,使得放置在窗體中的每個窗口部件都有一個適合的大小和位置,並且能夠隨着應用程序本身的變化而變化從而達到不改變整體的布局的結構的效果。相對於通過設定絕對位置來搭建界面的方法來講有如下優點

1.1.父窗口改變的時候,子窗口不能作出相應的調整。

1.2.不用人工計算這些位置和大小

2.Qt中的布局類及繼承關系:

QBoxLayout  QHBoxLayout  QVBoxLayout  QGridLayout  QFormLayout  QStackedLayout

繼承關系圖如下:

 

QBoxLayout:直線布局,可以規定排序的方向是從左到右還是從右到左,從上到下還是從下到上布局  

QHBoxLayout  :水平布局

QVBoxLayout  :垂直布局

QGridLayout  : 將空間划分為若干個行和列,並把子窗口部件放置到划分成的一個個小空間中

QFormLayout :表格布局把布局空間划分為兩列,一列一般放標簽,另一列一般用於放置LableEdit之類的窗口部件。  

QStackedLayout:把一系列窗口部件排列成堆疊的形式,每次只能頂部的部件是可見的。

 

3.改善布局結構

大小暗示sizeHint在未被重載的情況下,如果該窗口部件屬於某個布局管理器,那么返回的值為QT為這個部件推薦的尺寸。如果不屬於任何布局管理器的時候返回無效的值

最小大小暗示minimumsizehint :為某個窗口部件提供最小大小的限制。任何小於這個尺寸的窗口都被限制為這個大小

大小策略 QSizePolicy

Fix  不會發生任何的伸縮

minimum  推薦的大小是它的最小尺寸,它不會變得更小,但是可以變得更大

maximum 推薦的大小是它的最大尺寸,不會變得更大

preferred   推薦大小為優先選擇,可以變大或者變小

expanding  能夠感知到推薦的大小,但是會以盡可能大的空間來放置窗口部件

ignore       不能感知到推薦的大小,會以盡可能大的空間來放置窗口部件

伸縮因子

用於說明在增大窗體的時候,對不同的子窗口部件使用不同的放大比例。通過設置qsizePolicy::horizontalstretch   qsizePolicy::verticalstretch來實現

大小限制

設置窗口的最大大小最小大小,通過sizeConstraint來獲取,通過setsizeconstraint來設置

空白和邊距

空白指的是整個布局四周距離窗體邊緣的距離,間距指的是布局內部各個窗口部件之間的距離

空白設置setcontentmargins,間距設置setspacing

對於柵格布局和表格布局使用的是sethorizonspacing和setverticalspacing來設置。

 

4.布局管理器的基本操作

向布局中增加部件

向布局中刪除部件

取消布局

應用一個布局

http://blog.csdn.net/jimmy2013_1_1/article/details/8598264


免責聲明!

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



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