本系列文章長期更新修改.
qgridlayout,網格布局,是qt裡十分常用的布局,下圖即為網格布局示意圖.
1.網格系統
qgridlayout是一種網格布局系統,和css裡的bootstrap相似,但比它更複雜.
乙個網格布局就是乙個矩陣,每個格仔都可以放乙個控制項或者乙個子布局,也可以乙個控制項占用多個格仔.
qwidget可以通過addlayout來把布局物件設定為它的布局,這個時候布局的父親會被設定成這個qwidget,因此你也可以在qgridlayout初始化的時候指定父親,來實現這個.
2.新增控制項或布局
qgridlayout提供了7個函式來新增控制項或子布局等,共分成了三類.
新增控制項一般用addwidget,新增子布局用addlayout,而additem是乙個虛函式,在這裡一般不使用.
引數裡的row和column就是要放到第幾行第幾列的意思,從零開始.
rowspan和columnspan則是這個控制項要佔多少行多少列,預設就是1行1列.如果它們為-1則表示控制項要佔據到下邊緣和右邊緣.
alignment是控制項在格仔裡的對齊樣式.
3.寬度高度
不同列和不同行的寬度高度不一定都是一樣的,並且通常是不一樣的.
每一列都會有乙個最小寬度和比例係數,對應地每一行都會有乙個最小高度和比例係數.
qgridlayout通過這兩個引數以及這個布局的寬度高度,去計算乙個行乙個列的實際寬度高度.
舉乙個比例係數的用法例子,假如我們要讓第一列和第二列的寬度比例是1:3,我們可以這樣寫:
setcolumnstretch(0, 1)
setcolumnstretch(1, 3)
第乙個引數表明第幾列,第二個引數表示比例係數.
但有時我們會發現,設定好的比例係數並不符合我們的要求,這是因為這個布局的寬度高度太小了,而且布局優先滿足寬度高度不小於最小寬度高度,以致於無法滿足比例要求.
其實比例係數的直譯是延伸因子,我的理解是當布局的寬度高度不斷擴大時,列行的寬度高度會按照延伸因子的比例去設定,這一點很重要.
如果我們想某兩個列的寬度始終一樣,那麼它們的最小寬度和比例係數也要設定成一樣.
4.外邊距和控制項間距
外邊距margin和css裡的margin是乙個意思,是這個布局的外邊距.
控制項間距spacing是格仔與格仔之間的間距,包括了垂直和水平,你也可以單獨設定垂直間距和水平間距.
當垂直間距和水平間距不相等時,spacing()返回-1.
5.尺寸獲取
由於qgridlayout裡的每行每列都有乙個最小寬度高度,加上外邊距和控制項間距,qgridlayout會得出乙個最小的尺寸minimumsize.
相對地,qgridlayout有乙個最大尺寸,寬度是乙個很大的數字,但高度和最小值一樣,含義未知,貌似也很難用到.
還有乙個尺寸可以得到,就是每個格仔的尺寸,注意這個函式要在布局尺寸真正確定下來的時候才會得到有效值(相當於要show了之後)
cellrect返回的是乙個qrect,也就說說它不僅返回尺寸,還返回格仔左上角的座標.
6.控制項引數
可以通過下面函式獲取新增控制項時的4個引數:
idx是下標的意思,這個下標是根據新增控制項先後順序計算的,並且從零開始.
7.數值獲取
有三個比較常用的數值,布局裡有多少個控制項,有多少行,有多少列.
8.寬度高度糾纏*
有些場合我們的高度是根據寬度計算的,這時候下面的函式就有需要了.
但qgridlayout沒有寬度高度糾纏,因此我們要實現寬度高度糾纏的時候,需要繼承qgridlayout,然後重新實現這些函式.
第乙個函式表明是否有設定寬度高度糾纏,後兩個函式的引數的int就是寬度,返回值則是(推薦)高度和最小高度,沒有設定糾纏的時候這兩個函式應該返回-1.
暫時不清楚qt會怎麼呼叫這些函式來工作.
9.原點設定
qgridlayout可以設定原點(0,0)的位置,預設是qt.topleftcorner,就是左上角.如設定在右下角的話,x軸和y軸的方向就相反了.
10.待續
qt.orientations expandingdirections (self)
invalidate (self)
qlayoutitem itemat (self, int)
qlayoutitem itematposition (self, int row, int column)
setdefaultpositioning (self, int n, qt.orientation orient)
setgeometry (self, qrect)
qlayoutitem takeat (self, int)
pyqt4文件閱讀 7 QSize
本系列文章長期更新修改.qsize,是qt的乙個常用資料結構,它是整數寬度高度的封裝,本質上就是兩個int的結構體.1.主要屬性 qsize的主要屬性就是寬度和高度,所有方法都圍繞它們進行計算.初始化的時候如果沒有給出引數,寬度和高度為 1.2.函式解釋 函式 解釋transpose self 交換...
pyqt4文件閱讀 7 2 QRect
本系列文章長期更新修改.qrect,相當於qpoint qsize,但擁有更豐富的函式和操作,本質上是4個int的結構體.1.主要屬性 qrect是用來描述乙個矩形的資料結構.在座標系裡描述乙個矩形,只要4個數,分別是矩形左上角的x,y座標,以及矩形的寬度和高度,也就是qpoint qsize.注意...
pyqt4文件閱讀 7 4 QLine
本系列文章長期更新修改.qline,是qt裡用來表示一條線的資料結構,它由兩個整數點qpoint構成,本質上是四個int的結構體.1.主要屬性 qline的主要屬性就是線條起點終點的x,y座標,共四個整數.在初始化的時候,如果不提供座標,則這四個整數均為0.下面的一系列函式是qline主要屬性的獲取...