78.布局管理

目录

1  一个例子

2  布局的简单使用

2.1  创建布局对象

2.2  设置布局对象参数

2.2.1  设置间距 setContentsMargins()

2.2.2  设置间隔 setSpacing()

2.2.3  设置摆放方式 setAlignment()

2.3  设置给需要布局的控件父控件或调整方向

2.3.1  父控件设置布局管理器 QWidget.setLayout()

2.3.2  设置方向 QWidget.setLayoutDirection()

2.3.3  取消设置方向 unsetLayoutDirection()

3  布局的详细使用


1  一个例子

为了引入布局管理,我们先搞一下小例子

当前我有一个窗口,窗口里有三个标签,我现在需要它们垂直排在窗口中

如果是在之前的话我们会这样写

会有很多的小问题,比如当我们改变窗口大小时会多出来一块,比如往label中加入文字,标签大小不能根据内容而改变,当然我们也有很多方法去解决这些问题,但是解决问题会增加代码量,此时我们如果使用布局管理器进行布局,则更加的便捷

  • 垂直布局管理器 QVBoxLayout()

在创建三个控件之后,我们这样写

此时我们可以拉伸窗口,发现随着窗口大小,标签大小也在改变

我们也可以这样写

布局管理器继承关系是这样的

2  布局的简单使用

2.1  创建布局对象

之前我们用的是纵向布局管理器

这次我们使用横向布局管理器

我们现在查看一下所有窗口的子类

发现有一个横向布局管理器和三个标签控件

2.2  设置布局对象参数

2.2.1  设置间距 setContentsMargins()

四个参数分别是左上右下的间距,此时我将它们的间距都设为50

2.2.2  设置间隔 setSpacing()

参数为每个控件的间隔,我们现在设置间隔为20

2.2.3  设置摆放方式 setAlignment()

有三种写法

下面三个方法都涉及到Qt.Alignment这个变量,我们都使用Qt.AlignCenter中心摆放来替代

  • 摆放的方式可以在70.Label 1.2中找到
  • setAlignment(self,QWidget,Union[Qt.Alignment,Qt.AlignmentFlag])

我们可以设置控件内文字的摆放方式

标签1的文字在label1的中心

  • setAlignment(self,QLayout,Union[Qt.Alignment,Qt.AlignmentFlag])

这个需要嵌套,我们现在搞一个垂直的布局管理器套在水平的布局管理器中

我们增加label4和label5两个标签

然后创建一个竖直布局管理器之后把这两个标签放进去

然后再把竖直布局管理器放进水平布局管理器中

现在的状态是这样的

我们此时让竖直布局管理器的控件摆放在竖直布局管理器中心

  • setAlignment(self,Union[Qt.Alignment,Qt.AlignmentFlag])

我们此时直接对水平管理器设置摆放位置

2.3  设置给需要布局的控件父控件或调整方向

2.3.1  父控件设置布局管理器 QWidget.setLayout()

这个在之前就使用过,我在这里就提一下

此时我删除前面所有的布局对象参数,此时的窗口是这样的

2.3.2  设置方向 QWidget.setLayoutDirection()

括号内有三个值可以填

  • Qt.LeftToRight 从左到右
  • Qt.RightToLeft 从右到左
  • Qt.LayoutDirectionAuto 自动判断
  • 从左到右和从右到左对数值布局管理器没有影响,但是不会报错
  • 竖直的我不知道该怎么调整顺序

我们现在搞一下水平管理器从右到左

2.3.3  取消设置方向 unsetLayoutDirection()

刚刚设置过,我们现在把它取消掉

3  布局的详细使用

布局管理器的继承图是上面这个样子的

这个我们拆到下面的若干小结来讲

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值