上节,我们讲了怎么画控件,以及监控增加对应的事件方法。
这节,我们讲下布局,可能会涉及到一些其他的控件元素。
一、绝对定位
像我们之前写demo时,就一直用的绝对定位——以像素为单位指定每个小部件的位置和大小
这种定位方式,在稍微复杂一点的界面改变整体局部的时候,会比较繁琐。
二、横向和纵向布局
QHBoxLayout——横向布局类
QVBoxLayout——纵向布局类
这就是横向布局的效果了
这就是纵向布局的效果。
有些同学可能会觉得,这看着不太对劲啊,能不能怎么调整下,那我们再介绍一个拉伸因子
addStretch()
当拉升因子只有一个是,会占据全部的空白空间。这里我们把拉升因子排按钮前面,就会把按钮挤到最右边去。
要是出现多个拉升因子,会按参数比例,占据对应的空白空间。
在最后加,就可以让控件从左边开始排列
大家有兴趣的,可以自己去试试各种效果哈~
三、栅格布局
QGridLayout——多行多列布局类
先声明一个QGridLayout,然后设置它里面各控件的间距。
然后addWidget加入控件,以及相关行列参数。
grid.addWidget(title, 1, 0)
grid.addWidget(titleEdit, 1, 1)
例如:这的意思就是title在第一行,第0列。
titleEdit在第一行,第一列
最后一个控件占据剩下全部位置。
有同学要问了,想要跨行怎么办。那就给addWidget四个参数,
如这里grid.addWidget(reviewEdit, 3, 1, 9, 1)
就是第三行第一列,到第九行第一列。,可以很明显的看到对应Review的位置发生了变化。
从之前的占据剩余全部列数,变成了9列中的第三列位置。
以上三种基础布局方式,就讲到这里了。看哪一种更适合你~