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