80.QBoxLayout

目录

1  构造函数

2  修改方向

2.1  设置 setDirection()

2.2  获取 direction()

3  添加元素

3.1  添加控件

3.1.1  addWidget()

3.1.2  insertWidget()

3.2  添加子布局

3.2.1  addLayout()

3.2.2  insertLayout()

3.3  替换控件 replaceWidget()

3.4  移除控件

3.4.1  removeWidget()

3.4.2  QWidget.hide()

3.5  添加空白

3.5.1  addSpacing()

3.5.2  insertSpacing()

3.6  添加伸缩因子

3.6.1  addStretch()

3.6.2  insertStretch()

4  设置伸缩因子 setStretchFactor()

5  边距和间距


1  构造函数

实例化时需要一个方向的参数,可以选参数如下

我们此时就选择一个从左至右的方向,然后搞两个标签放在布局管理器中

此时的窗口是这个样子的

2  修改方向

QBoxLayout_Direction中的值和上面构造函数可选的值相同

2.1  设置 setDirection()

我们现在设置为自下而上

2.2  获取 direction()

我们可以使用这个改变方向达成一个效果,搞一个定时器,每1s变换一次方向,这个在 81.每一秒换一次布局管理器的方向 中写

  • 2.修改方向 中的方法在它的子类纵向管理器与横向管理器同样生效,无论是这两个控件的哪一个都生效

3  添加元素

3.1  添加控件

3.1.1  addWidget()

在QBoxLayout中可以加入伸缩因子这个参数,我们加一个,然后说明伸缩因子是什么

我们当前把三个标签放在布局管理器中

现在我们给这三个标签都加入伸缩因子

此时,标签1占整个布局管理器的1/6,标签2占整个布局管理器的2/6,标签3占整个布局管理器的3/6

3.1.2  insertWidget()

第一个参数是位置,第二个参数是控件,我们现在把控件插入到第0位

当然我们也可以加入伸缩因子,此时一定要所有控件都设置了伸缩因子它才会有效

3.2  添加子布局

3.2.1  addLayout()

我们搞两个标签然后创建一个布局管理器,之后把控件放入布局管理器中

然后把布局管理器layout2添加到layout1中

添加之前是这样的

添加之后是这样的

同样可以加入伸缩因子

3.2.2  insertLayout()

我们取消掉之前的添加,现在界面是这样的

现在将布局管理器插入到第一位

加入伸缩因子

  • 除了伸缩因子还有一个可选参数是对其方式,之前提到过,在70.label展示了所有的对其方式
  • 3.1与3.2中如果不设置伸缩因子默认为0,当伸缩因子为0时,其他所有控件都没有设置伸缩因子时,所有控件平分整个区域,当有一个控件设置了伸缩因子,没有设置伸缩因子的控件全部为最小尺寸

3.3  替换控件 replaceWidget()

替换前是这样的

我们现在把标签2替换为标签3

3.4  移除控件

3.4.1  removeWidget()

移除前是这样的

我们现在移除标签2

3.4.2  QWidget.hide()

这个叫隐藏,也能达到移除的效果

隐藏前是这样的

现在我们隐藏label2

3.5  添加空白

3.5.1  addSpacing()

没添加前是这样的

现在我们添加50长度的空白,如果是横向的管理器就是宽度,如果是纵向的就是高度

3.5.2  insertSpacing()

这个方法可以将空白插入指定位置

没插入前是这样的

现在我们在第1位插入50像素的空白

  • 以上插入空白的方法无论如何调整窗口大小,它的空白长度都是50
  • 插入空白后,空白不算控件位置

也就是说在上面这个图中,标签3是第0位,标签1是第1位,标签2是第2位

  • 空白不可以设置伸缩因子

3.6  添加伸缩因子

上面已经基本了解了伸缩因子是什么,在这里添加其实是添加一个可伸缩的空白

3.6.1  addStretch()

添加前是这个样子的

3.6.2  insertStretch()

插入前是这样的

我们现在在第一位插入伸缩因子

  • 以上设置的伸缩因子都有一个最小值,当窗口足够小时,伸缩因子长度为0
  • 上面也可以不加伸缩因子参数(参数因子默认为0),如果不加就保持控件的最小尺寸,然后把空白都给伸缩因子

4  设置伸缩因子 setStretchFactor()

如果在添加、插入控件和布局管理器时没有添加伸缩因子参数,我们可以通过这样的方法添加

当前的窗口是这样的

我们现在给每一个元素都设置伸缩因子

  • setStretchFactor()这个方法有一个布尔值的返回值,如果设置成功则返回True,如果失败则返回False

5  边距和间距

这两个方法在79.QLayout都讲过,在这里就不再讲了

  • 它的两个子类QHBoxLayout与QVBoxLayout没有独立的方法,我们之前也在78.布局管理使用过,之后就不进行讲解了
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Suyuoa

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

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

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

打赏作者

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

抵扣说明:

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

余额充值