- class QGridLayout#
QGridLayout
类在网格中布局小部件。 了解更多…概要#
方法#
def
__init__()
def
addItem()
def
addLayout()
def
addWidget()
def
cellRect()
def
columnCount()
def
columnStretch()
定义
rowCount()
定义
rowStretch()
备注
本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告知我们。
详细描述#
QGridLayout
接收其父布局或通过parentWidget()
) 提供的空间,将其分成行和列,并将每个它管理的小部件放入正确的单元格。列和行表现得相同;我们将讨论列,但行也有等效的函数。
每一列都有一个最小宽度和一个拉伸因子。最小宽度是使用
setColumnMinimumWidth()
设置的值和该列中每个小部件的最小宽度中的最大值。拉伸因子通过setColumnStretch()
设置,并确定列将获得多少超过其必要最小值的空间。通常,每个管理的小部件或布局都使用
addWidget()
方法被放入自己的单元格中。小部件也可以使用addItem()
和addWidget()
方法的重载跨行跨列占据多个单元格。如果你这样做,QGridLayout
将会根据拉伸因子分配大小以跨列/行。要从布局中移除小部件,请调用
removeWidget()
方法。在小部件上调用hide()
方法也可以有效地移除小部件,直到调用show()
方法才将其显示出来。本图展示了包含五列三行网格的对话框片段(网格用品红色覆盖显示)。
在这个对话框片段中,列0由一个
QLabel
、一个QLineEdit
和一个 QListBox 组成;列1和3是由setColumnMinimumWidth()
创建的占位符。行0由三个QLabel
对象组成,行1由三个QLineEdit
对象组成,行2由三个 QListBox 对象组成。我们使用了占位符列(1和3)来获取列之间的合适间距。请注意,列和行的宽度和高度并不相等。如果你想要两列具有相同的宽度,你必须自己设置它们的 minimum widths 和 stretch factors 相同。这可以通过使用
setColumnMinimumWidth()
和setColumnStretch()
方法来实现。如果
QGridLayout
不是顶级布局(即不管理所有小部件的区域和子元素),则在创建时必须将其添加到父布局中,但在对其进行任何操作之前。向父布局添加布局的正常方法是在父布局上调用addLayout()
方法。一旦添加了布局,就可以使用
addWidget()
,addItem()
,以及addLayout()
将小部件和其他布局添加到网格布局的单元格中。QGridLayout
还包含两个边距宽度:contents margin
和spacing()
。内容边距是沿QGridLayout
的四边的预留空间宽度。间距的宽度是自动分配给相邻框之间的宽度。默认内容边距值由
style
提供。Qt 风格指定的默认值是 9(子小部件)和 11(窗口)。间距默认值与顶级布局的边距宽度相同,或者与父布局相同。参阅:
QBoxLayout
QStackedLayout
布局管理 基本布局示例使用父控件
parent
构建一个新的QGridLayout
。布局最初有一行一列,并在插入新项时扩展。布局直接设置为
parent
的顶级布局。对于控件,只能有一个顶级布局。它由layout()
返回。如果
parent
是None
,则必须将此网格布局插入到另一个布局中,或者使用setLayout()
将其设置为小部件的布局。参阅:
- addItem(item, row, column[, rowSpan=1[, columnSpan=1[, alignment=Qt.Alignment()]]])#
- 参数:
item –
QLayoutItem
row – int
column – int
rowSpan – int
columnSpan – int
alignment –
AlignmentFlag
的组合
将
item
添加到位置row
,column
,跨越rowSpan
行和columnSpan
列,并根据alignment
进行对齐。如果rowSpan
和/orcolumnSpan
为 -1,则项目将扩展到底部和/or 右边缘。布局将拥有item
的所有权。警告
请不要使用此函数来添加子布局或子小部件项。请使用
addLayout()
或addWidget()
。- addLayout(arg__1, row, column[, alignment=Qt.Alignment()])#
- 参数:
arg__1 –
QLayout
row – int
column – int
alignment –
AlignmentFlag
的组合
将布局放置在网格中位置 (
row
,column
)。左上角位置为 (0, 0)。对齐方式由
alignment
指定。默认对齐为 0,表示小部件填满整个单元格。非零对齐表示布局不应扩展以填充可用空间,而应根据
sizeHint()
的大小进行调整。layout
成为网格布局的子布局。- addLayout(arg__1, row, column, rowSpan, columnSpan[, alignment=Qt.Alignment()])
- 参数:
arg__1 –
QLayout
row – int
column – int
rowSpan – int
columnSpan – int
alignment –
AlignmentFlag
的组合
这是一个重载函数。
本版本添加了对单元网格的布局
layout
支持,可跨越多行/多列。单元格将从row
、column
开始,跨越rowSpan
行和columnSpan
列。如果
rowSpan
和/或columnSpan
的值为 -1,则布局将分别扩展到底部/右边缘。- addWidget(arg__1, row, column[, alignment=Qt.Alignment()])#
- 参数:
arg__1 –
QWidget
row – int
column – int
alignment –
AlignmentFlag
的组合
在
row
、column
位置的单元格中添加给定的widget
。默认情况下,左上角位置为 (0, 0)。对齐方式由
alignment
指定。默认对齐为 0,表示小部件填满整个单元格。- addWidget(arg__1, row, column, rowSpan, columnSpan[, alignment=Qt.Alignment()])
- 参数:
arg__1 –
QWidget
row – int
column – int
rowSpan – int
columnSpan – int
alignment –
AlignmentFlag
的组合
这是一个重载函数。
此版本将给定的
widget
添加到单元网格中,可跨越多行/多列。单元格将从fromRow
、fromColumn
开始,跨越rowSpan
行和columnSpan
列。该widget
将具有指定的alignment
对齐方式。如果
rowSpan
和/或columnSpan
的值为 -1,则该widget
将分别扩展到底部/右边缘。返回行
row
和列column
在网格中的几何形状。如果row
或column
在网格外,则返回无效的矩形。警告
在当前 Qt 版本中,此函数在调用
setGeometry()
(即在parentWidget()
可见之后)之前不会返回有效结果。- columnCount()#
- 返回类型::
int
返回此网格的列数。
- columnMinimumWidth(column)#
- 参数:
column – int
- 返回类型::
int
返回列
column
的间距。- columnStretch(column)#
- 参数:
column – int
- 返回类型::
int
返回列
column
的伸缩因子。- getItemPosition(idx)#
- 参数:
idx – int
- 返回类型::
PyObject*
返回具有给定
index
的项的位置信息。将作为
row
和column
传递的变量更新为项在布局中的位置,而rowSpan
和columnSpan
变量则更新为项的垂直和水平跨度。参阅:
itemAtPosition()
itemAt()
- horizontalSpacing()#
- 返回类型::
int
- itemAtPosition(row, column)#
- 参数:
row – int
column – int
- 返回类型::
返回占据单元格 (
row
,column
) 的布局项,如果单元格为空,则返回None
。返回用于网格原点(即位置(0,0))的角。
- rowCount()#
- 返回类型::
int
返回此网格中的行数。
- rowMinimumHeight(row)#
- 参数:
row – int
- 返回类型::
int
返回为行
row
设置的最小宽度。- rowStretch(row)#
- 参数:
row – int
- 返回类型::
int
返回行
row
的伸缩因子。参阅:
- setColumnMinimumWidth(column, minSize)#
- 参数:
column – int
minSize - int
将列
column
的最小宽度设置为minSize
像素。- setColumnStretch(column, stretch)#
- 参数:
column – int
stretch - int
设置列
column
的拉伸因子为stretch
。第一列的编号为 0。拉伸因子相对于该网格中的其他列。具有更高拉伸因子的列将占据更多的可用空间。
默认的拉伸因子为 0。如果拉伸因子为 0 并且此表中没有其他列可以增长,则该列仍可能增长。
另一种方法是使用带有
addItem()
和一个QSpacerItem
的方式添加间距。- setDefaultPositioning(n, orient)#
- 参数:
n - int
orient -
Orientation
- setHorizontalSpacing(spacing)#
- 参数:
spacing - int
将网格的起始角(即位置(0,0))设置为
corner
。- setRowMinimumHeight(row, minSize)#
- 参数:
row – int
minSize - int
设置行
row
的最小高度为minSize
像素。- setRowStretch(row, stretch)#
- 参数:
row – int
stretch - int
设置行
row
的拉伸系数为stretch
。第一行的编号为0。拉伸系数相对于此网格中的其他行。拉伸系数更高的行将占据更多的可用空间。
默认的拉伸系数为0。如果拉伸系数为0且表中的其他行都无法增长,该行仍然可能增长。
- setVerticalSpacing(spacing)#
- 参数:
spacing - int
- verticalSpacing()#
- 返回类型::
int