Qt布局管理器之網格布局 QGridLayout

2021-09-26 05:47:24 字數 1643 閱讀 9457

qt網格布局和水平、垂直布局類似,qgridlayout將控制項布局在網格中。qgridlayout和qhboxlayout類似,可以插入widget、插入子layout、設定拉伸係數等,不同的是qgridlayout多了乙個行、列的概念。在插入widget、插入子layout、設定拉伸係數時都需要規定行或列。如果說qhboxlayout和qvboxlayout是建立在一維座標系上的,那qgridlayout就是建立在二維座標系上的。

void addwidget(qwidget *widget, int row, int column, qt::alignment alignment = ...)

void addwidget(qwidget *widget, int fromrow, int fromcolumn, int rowspan, int columnspan, qt::alignment alignment = ...)

其中方法2在設定了行列的同時,還設定了行跨度和列跨度。意思是乙個widget可以設定為佔據多行多列,而不是只能佔據單行單列(類似於excel中合併**)。

void additem(qlayoutitem *item, int row, int column, int rowspan = 1, int columnspan = 1, qt::alignment alignment = ...)

void addlayout(qlayout *layout, int row, int column, qt::alignment alignment = ...)

void addlayout(qlayout *layout, int row, int column, int rowspan, int columnspan, qt::alignment alignment = ...)

在指定的行列插入乙個子布局,用法和widget的插入類似,同樣可以跨越多行插入。

//設定某列的拉伸係數

void setcolumnstretch(int column, int stretch)

//設定某行的拉伸係數

void setrowstretch(int row, int stretch)

qgridlayout可以針對某行或某列設定拉伸係數,其用法和現象和qboxlayout類似。

void sethorizontalspacing(int spacing)

void setverticalspacing(int spacing)

同樣可以針對行、列單獨設定。

由於qgridlayout的很多方法和qhboxlayout非常類似,這一篇部落格不對qgridlayout進行詳細的介紹,只演示一下widget的插入,同樣還是純**方式實現。

int main(int argc, char *ar**)

其中先是在0行0列、1行0列、2行0列插入了乙個按鈕,然後又在0行1列、2行一列插入了乙個按鈕(1行1列空出來了),最後在0行2列插入了乙個佔據3行4列的文字編輯框。

現象:

GUI 網格布局管理器

gridbaglayout 網格布局管理器 特點 靈活,複雜。這個布局管理器和gridlayout相似,看名字也可以看的出來,就差乙個bag.但是他允許網格中的元件大小各不相同,而且允許乙個元件跨越乙個或者多個網格。網格的總體方向取決於容器的 componentorientation 屬性。對於水平...

布局管理器 網格袋布局管理器

網格袋布局管理器中的約束條件constrains中有如下字段需要設定 1 constrains.gridx和constrains.gridy 這兩個欄位僅用於指定元件的起始網格座標。2 constrains.gridwidth和constrains.gridheight 這兩個字段用於指定元件所佔網...

qt之布局管理器

我們載入控制項的時候,我們可以用布局類來指定父視窗 然後widget可以直接載入布局類 qt的布局類 水平布局 qhboxlayout 垂直布局 qvboxlayout 柵格布局 qfromlayout 手動布局 常用介面 addwidget qwieget int row,int colunum,...