一、描述
QGridLayout 获取对其可用的空间(通过其父布局或通过 parentWidget()),将其划分为行和列,并将其管理的每个小部件放入正确的单元格中。
每列/行都有一个最小宽度/最小高度和一个拉伸因子。
列和行的宽度或高度不同。如果希望两列具有相同的宽度,必须将它们的最小宽度和拉伸因子设置为相同。
QGridLayout 还包括两个边距宽度:内容边距和间距。内容边距是沿 QGridLayout 的四个边的每个保留空间的宽度。间距是相邻框之间自动分配的间距的宽度。
默认内容边距值由样式提供。Qt 样式指定的默认值对于子窗口小部件是 9,对于窗口是 11。间距默认与顶级布局的边距宽度相同,或与父布局相同。
二、属性成员
1、horizontalSpacing : int / verticalSpacing : int
水平间距 / 垂直间距。
三、成员函数
1、void addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())
添加 item,并根据 alignment 对齐。如果 rowSpan 和/或 columnSpan 为 -1,则 item 将分别延伸到底部和/或右侧边缘。布局获取 item 的所有权。
勿使用此功能添加子布局或子小部件项目。应使用 addLayout() 或 addWidget()。
2、void addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
void addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
将 layout / widget 放置在网格中的(row、column)。
默认对齐方式为 layout / widget 填充整个单元格。
非Qt::Alignment()的对齐方式表示布局不应增长以填充可用空间,但应根据 QGridLayout::sizeHint() 调整大小。
layout / widget 成为网格布局的子级。
void addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
void addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
layout 添加到网格布局,跨越 rowSpan 行和 columnSpan 列。
若 rowSpan 和/或 columnSpan 为 -1,则 layout / widget 将分别延伸到底部和/或右侧边缘。
3、QRect cellRect(int row, int column)
返回网格布局中相应单元格中的几何形状。
4、int columnCount() / int rowCount()
返回此网格中的列 / 行数。
5、int columnMinimumWidth(int column) / int rowMinimumHeight(int row)
void setColumnMinimumWidth(int column, int minSize)
void setRowMinimumHeight(int row, int minSize)
第 column 列 / row 行的最小宽度 / 高度。
6、int columnStretch(int column) / int rowStretch(int row)
void setColumnStretch(int column, int stretch) / void setRowStretch(int row, int stretch)
第 column 列 / row 行的拉伸因子。
拉伸因子相对于网格布局中的其他行/列。具有较高拉伸因子的行/列占用更多可用空间。
7、void getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan)
返回第 index 处的项目的位置信息。
8、QLayoutItem * itemAtPosition(int row, int column)
返回占据单元格(row , column)的布局项。
9、Qt::Corner originCorner() / void setOriginCorner(Qt::Corner Corner)
设置用于网格原点的角,即位置 (0, 0)。
enum Qt::Corner:此枚举类型指定矩形中的一个角:
- Qt::TopLeftCorner:矩形的左上角(默认)。
- Qt::TopRightCorner:矩形的右上角。
- Qt::BottomLeftCorner:矩形的左下角。
- Qt::BottomRightCorner:矩形的右下角。
默认如下布局:
然后设置其他类型:
Qt::TopRightCorner
Qt::BottomLeftCorner
Qt::BottomRightCorner
可以用 QGridLayout 的情况基本上也能用 QFormLayout,而且 QFormLayout 更加方便,但这个函数的功能是 QFormLayout 不具备的。
10、void setSpacing(int spacing)
将垂直和水平间距都设置为 spacing。
int spacing()
如果垂直间距等于水平间距,则此函数返回该值; 否则返回-1。