Qt系列教程总目录
与只能在一个方向布局不同,可以在网格中布局(垂直和水平两个方向)。

这里仅以按钮为例,布局也可用于其他控件。
一、QGridLayout布局规则
与类似,详见 QBoxLayout布局规则
二、创建QGridLayout
只有一个构造函数
可以通过拖动控件创建,也可以使用代码直接创建
由于布局是默认铺满父级的,为了方便控制布局的整体大小,一般不是将最外层的窗口传给,而是再新建一个,如下:
三、成员函数
1. 控件间距
和类似,也有间距的概念,不同是可以设置两个方向的间距,如下:
2. 可拉伸控件(弹簧)
同样和类似,参考 可拉伸控件 ,相关函数如下:
3. 最小行高/列宽
4. 行数和列数
5. 锁定纵横比
根据宽度计算高度
这三个函数默认是没有实际功能的,如要使用,需要自己重载实现,他们的源码如下:
官方给出了重载的例子,如下:
6. 添加控件
其中, 如果队列中间有空的位置,也会忽略过,只会在队列最后添加新控件,如下:

第三行第二列空出一个位置,添加控件后,跳过了该位置,如下:

如果想一个控件占多行/列,可以使用函数 ,其中,参数和用以指定控件的位置,从开始计数,和 指定从当前位置向右或向下所占的行和列数,如下:
原始布局,为了方便显示控件所占空间,将控件的设置为,使其充满布局单元格(关于详见QGridLayout布局规则):

示例1:
在的位置添加行控件,所占空间为1行1列,如下:

示例2:
在的位置添加行控件,所占空间为2行1列,如下:

示例3:
如果和 为,则控件所占控件一直延申到最右和最底部边界,如下:

7. 添加布局
布局中还能嵌套布局,函数入参与使用方法和类似,这里不再赘述。
8. 设置栅格布局原点位置
和的类似,设置布局中控件的排列方向。
其中,是一个枚举如下:
布局原点默认为左上角,如下图:

右上角如下图,其他方向同理:

9. 操作布局项
Qt提供了一个布局项的抽象类,提供了对布局中单元格的操作。
这里仅介绍直接涉及到的几个方法,关于更详细的描述见
9.1 访问布局项
可以通过索引访问,也可以通过所在行列位置访问。
默认计数都是从0开始,需要注意的是,的方式是从远离原点的位置开始计数,行列定位的则是从靠近原点的位置开始计数,如下:
方式:(测试发现的,不知道为什么要这么设计,和习惯用法不同,如果你知道原因欢迎评论区留言)

行列方式:

9.2 删除布局项
这个只能通过索引定位,索引计数方法同上。

9.3 通过索引获取布局项位置信息

9.4 获取布局项数量

版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/11007.html