目录
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.布局管理使用过,之后就不进行讲解了