QT: Layout布局間消除間隙(修改layout內置參數)


此文轉載自:https://blog.csdn.net/sazass/article/details/113175760#commentBox

1.問題描述:

layout布局時關於間隙的相關問題。

在設計布局時,為了繪制出邊框效果,使用了Frame或者GroupBox布局,內部的控件使用Layout水平布局或者垂直布局,然后全局針對Frame進行了垂直布局,最后柵格化布局
簡單演示:
布局步驟:
1.創建Frame
2.Frame內創建PushButton控件和Spacer控件
3.對Frame內的所有控件建立HorizontalLayout水平布局
4.Frame內柵格化布局
5.按上述方式再創建一個Frame
6.將兩個Frame和一個VerticalSpacer建立VerticalLayout垂直布局
7.最后在主頁面上柵格化布局
在這里插入圖片描述
在這里插入圖片描述
很顯然存在兩個問題:
1.Frame與Frame之間存在間隙
2.Frame內各個控件存在間隙
然后我的目的是為了消除這個間隙

2.解決方式,修改Layout參數:

我們先選中Frame框架控件:
在這里插入圖片描述
修改下方的Layout相關參數;
先解釋一下各個參數

layoutLeftMargin: layout內的布局距離邊框左端的距離。
layoutTopMargin: layout內的布局距離邊框頂端的距離。
layoutRightMargin: layout內的布局距離邊框右端的距離。
layoutBottomMargin: layout內的布局距離邊框底端的距離。
layoutHorizontalSpacing: layout內的水平方向內的對象(包括控件和低一級布局)的水平間隙。
layoutVerticalSpacing:layout內的垂直方向內的對象(包括控件和低一級布局)的垂直間隙。
layoutRowStretch: layout內的水平方向內的對象(包括控件和低一級布局)的水平尺寸比例。(例如1,2,表示水平的兩個對象的寬度比例為1:2,不過這也會受到sizePolicy影響)
layoutColumnStretch: layout內的垂直方向內的對象(包括控件和低一級布局)的垂直尺寸比例。

1.因為案例中一個Frame內只有一個horizontalLayout對象,所以只需要修改Frame內對象至邊框的距離。
在這里插入圖片描述
在這里插入圖片描述
可以看出Frame內對象至邊框的間隙沒有了,不過Frame內個控件之間的距離沒有消除,各個Frame間的間隔也沒有消除。

接下來,選中Frame中的horizontalLayout:
在這里插入圖片描述
layoutSpacing:layout內的各個對象之間的間隙;
layoutStretch: layout內的各個對象之間的尺寸比例。
(因為horizontalLayout和verticalLayout只有一個維度的方向,所以參數會比兩個維度的layout少)

2.然后我們修改layoutSpacing為0即可:
在這里插入圖片描述
3. 最后,我們在最后全局控制Frame的verticalLayout調整layout參數:

在這里插入圖片描述
4. 然后在全局的柵格化布局gridLayout,修改layout參數:
在這里插入圖片描述
最終效果:

在這里插入圖片描述


免責聲明!

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



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