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