QGridLayout理论总结
- 1. 简介
- 2. 操作布局元素
- 3. 常用属性
- 4. 间隔设置
1. 简介
QGridLayout 占用来自其父布局或 parentWidget()获得的空间,将其划分为行列表格形式,在每个布局的表格里放置控件或者布局器就行。
一般来说,列和行的行为功能相同;这里只讨论列,对应的行业具有相同属性。
每列都有一个最小宽度和一个 stretch factors。最小宽度是使用 setColumnMinimumWidth() 设置的最大宽度和该列中每个小部件的最小宽度。拉伸系数是使用 setColumnStretch() 设置的,并确定列将超出其必要的最小值的可用空间量。
这里有一个stretch factors 缩放因子,其实就是在布局器里面,每个控件或者布局按照什么比例划分布局的空间。
第一列 LayoutRowStretch 比例因子是2,其他是0,其实也就是 1,也就是说 第一列的布局元素按钮 大小的布局控件是其他的两倍。
2. 操作布局元素
通常,每个托管小部件或布局都使用 addWidget() 放入自己的单元格中。用addWidget(),addItem()和addLayout()开始将小部件和其他布局放入网格布局的单元格。同时,QGridLayout 将根据拉伸因子自动为列/行的所占宽高分配大小。
要从布局中删除小部件,请调用 removeWidget()。在 widget 上调用 QWidget::hide() 也会有效地从布局中删除该 widget,直到调用 QWidget::show()。
3. 常用属性
我们还可以通过 columnCount() 、rowCount() 来获取行列数目,用 itemAtPosition 来获取 对应位置的控件,这个控件可能是QWidget 也可能是 布局器的子类如 QSpaceItem QBoxLayout等。
4. 间隔设置
QBoxLayout 有两种间隔需要设置:
函数名 | 含义 |
---|---|
setContentsMargins() | 布局元素与布局器的边界,就是下面四周的间隔,默认是 9 |
setVerticalSpacing() | 就是垂直布局元素之间的间隔,默认是 6 |
setHorizontalSpacing | 就是水平布局元素之间的间隔,默认是 6 |