天天看点

QT: Layout布局间消除间隙(修改layout内置参数)

1.问题描述:

layout布局时关于间隙的相关问题。

在设计布局时,为了绘制出边框效果,使用了Frame或者GroupBox布局,内部的控件使用Layout水平布局或者垂直布局,然后全局针对Frame进行了垂直布局,最后栅格化布局

简单演示:

布局步骤:

1.创建Frame

2.Frame内创建PushButton控件和Spacer控件

3.对Frame内的所有控件建立HorizontalLayout水平布局

4.Frame内栅格化布局

5.按上述方式再创建一个Frame

6.将两个Frame和一个VerticalSpacer建立VerticalLayout垂直布局

7.最后在主页面上栅格化布局

QT: Layout布局间消除间隙(修改layout内置参数)
QT: Layout布局间消除间隙(修改layout内置参数)

很显然存在两个问题:

1.Frame与Frame之间存在间隙

2.Frame内各个控件存在间隙

然后我的目的是为了消除这个间隙

2.解决方式,修改Layout参数:

我们先选中Frame框架控件:

QT: Layout布局间消除间隙(修改layout内置参数)

修改下方的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内对象至边框的距离。

QT: Layout布局间消除间隙(修改layout内置参数)
QT: Layout布局间消除间隙(修改layout内置参数)

可以看出Frame内对象至边框的间隙没有了,不过Frame内个控件之间的距离没有消除,各个Frame间的间隔也没有消除。

接下来,选中Frame中的horizontalLayout:

QT: Layout布局间消除间隙(修改layout内置参数)

layoutSpacing:layout内的各个对象之间的间隙;

layoutStretch: layout内的各个对象之间的尺寸比例。

(因为horizontalLayout和verticalLayout只有一个维度的方向,所以参数会比两个维度的layout少)

2.然后我们修改layoutSpacing为0即可:

QT: Layout布局间消除间隙(修改layout内置参数)

3. 最后,我们在最后全局控制Frame的verticalLayout调整layout参数:

QT: Layout布局间消除间隙(修改layout内置参数)

4. 然后在全局的栅格化布局gridLayout,修改layout参数:

QT: Layout布局间消除间隙(修改layout内置参数)

最终效果:

QT: Layout布局间消除间隙(修改layout内置参数)

更多内容详见微信公众号:Python测试和开发

QT: Layout布局间消除间隙(修改layout内置参数)