class QGridLayout#

QGridLayout 类在网格中布局小部件。 了解更多

Inheritance diagram of PySide6.QtWidgets.QGridLayout

概要#

方法#

备注

本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告知我们。

详细描述#

QGridLayout 接收其父布局或通过 parentWidget() ) 提供的空间,将其分成行和列,并将每个它管理的小部件放入正确的单元格。

列和行表现得相同;我们将讨论列,但行也有等效的函数。

每一列都有一个最小宽度和一个拉伸因子。最小宽度是使用 setColumnMinimumWidth() 设置的值和该列中每个小部件的最小宽度中的最大值。拉伸因子通过 setColumnStretch() 设置,并确定列将获得多少超过其必要最小值的空间。

通常,每个管理的小部件或布局都使用addWidget()方法被放入自己的单元格中。小部件也可以使用addItem()addWidget()方法的重载跨行跨列占据多个单元格。如果你这样做,QGridLayout将会根据拉伸因子分配大小以跨列/行。

要从布局中移除小部件,请调用removeWidget()方法。在小部件上调用hide()方法也可以有效地移除小部件,直到调用show()方法才将其显示出来。

本图展示了包含五列三行网格的对话框片段(网格用品红色覆盖显示)。

../../_images/qgridlayout.png

在这个对话框片段中,列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 marginspacing() 。内容边距是沿 QGridLayout 的四边的预留空间宽度。间距的宽度是自动分配给相邻框之间的宽度。

默认内容边距值由 style 提供。Qt 风格指定的默认值是 9(子小部件)和 11(窗口)。间距默认值与顶级布局的边距宽度相同,或者与父布局相同。

参阅:

QBoxLayout QStackedLayout 布局管理 基本布局示例

__init__([parent=None])#
参数:

parent - QWidget

使用父控件 parent 构建一个新的 QGridLayout 。布局最初有一行一列,并在插入新项时扩展。

布局直接设置为 parent 的顶级布局。对于控件,只能有一个顶级布局。它由 layout() 返回。

如果 parentNone,则必须将此网格布局插入到另一个布局中,或者使用 setLayout() 将其设置为小部件的布局。

参阅:

setLayout()

addItem(item, row, column[, rowSpan=1[, columnSpan=1[, alignment=Qt.Alignment()]]])#
参数:
  • itemQLayoutItem

  • row – int

  • column – int

  • rowSpan – int

  • columnSpan – int

  • alignmentAlignmentFlag 的组合

item 添加到位置 row, column,跨越 rowSpan 行和 columnSpan 列,并根据 alignment 进行对齐。如果 rowSpan 和/or columnSpan 为 -1,则项目将扩展到底部和/or 右边缘。布局将拥有 item 的所有权。

警告

请不要使用此函数来添加子布局或子小部件项。请使用 addLayout()addWidget()

addLayout(arg__1, row, column[, alignment=Qt.Alignment()])#
参数:

将布局放置在网格中位置 (row, column)。左上角位置为 (0, 0)。

对齐方式由 alignment 指定。默认对齐为 0,表示小部件填满整个单元格。

非零对齐表示布局不应扩展以填充可用空间,而应根据 sizeHint() 的大小进行调整。

layout 成为网格布局的子布局。

addLayout(arg__1, row, column, rowSpan, columnSpan[, alignment=Qt.Alignment()])
参数:
  • arg__1QLayout

  • row – int

  • column – int

  • rowSpan – int

  • columnSpan – int

  • alignmentAlignmentFlag 的组合

这是一个重载函数。

本版本添加了对单元网格的布局 layout 支持,可跨越多行/多列。单元格将从 rowcolumn 开始,跨越 rowSpan 行和 columnSpan 列。

如果 rowSpan 和/或 columnSpan 的值为 -1,则布局将分别扩展到底部/右边缘。

addWidget(arg__1, row, column[, alignment=Qt.Alignment()])#
参数:

rowcolumn 位置的单元格中添加给定的 widget。默认情况下,左上角位置为 (0, 0)。

对齐方式由 alignment 指定。默认对齐为 0,表示小部件填满整个单元格。

addWidget(arg__1, row, column, rowSpan, columnSpan[, alignment=Qt.Alignment()])
参数:
  • arg__1QWidget

  • row – int

  • column – int

  • rowSpan – int

  • columnSpan – int

  • alignmentAlignmentFlag 的组合

这是一个重载函数。

此版本将给定的 widget 添加到单元网格中,可跨越多行/多列。单元格将从 fromRowfromColumn 开始,跨越 rowSpan 行和 columnSpan 列。该 widget 将具有指定的 alignment 对齐方式。

如果 rowSpan 和/或 columnSpan 的值为 -1,则该 widget 将分别扩展到底部/右边缘。

cellRect(row, column)#
参数:
  • row – int

  • column – int

返回类型::

QRect

返回行 row 和列 column 在网格中的几何形状。如果 rowcolumn 在网格外,则返回无效的矩形。

警告

在当前 Qt 版本中,此函数在调用 setGeometry()(即在 parentWidget() 可见之后)之前不会返回有效结果。

columnCount()#
返回类型::

int

返回此网格的列数。

columnMinimumWidth(column)#
参数:

column – int

返回类型::

int

返回列 column 的间距。

columnStretch(column)#
参数:

column – int

返回类型::

int

返回列 column 的伸缩因子。

参阅:

setColumnStretch()

getItemPosition(idx)#
参数:

idx – int

返回类型::

PyObject*

返回具有给定 index 的项的位置信息。

将作为 rowcolumn 传递的变量更新为项在布局中的位置,而 rowSpancolumnSpan 变量则更新为项的垂直和水平跨度。

参阅:

itemAtPosition() itemAt()

horizontalSpacing()#
返回类型::

int

itemAtPosition(row, column)#
参数:
  • row – int

  • column – int

返回类型::

QLayoutItem

返回占据单元格 (row, column) 的布局项,如果单元格为空,则返回 None

originCorner()#
返回类型::

Corner

返回用于网格原点(即位置(0,0))的角。

参阅:

setOriginCorner()

rowCount()#
返回类型::

int

返回此网格中的行数。

rowMinimumHeight(row)#
参数:

row – int

返回类型::

int

返回为行 row 设置的最小宽度。

rowStretch(row)#
参数:

row – int

返回类型::

int

返回行 row 的伸缩因子。

参阅:

setRowStretch()

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)#
参数:
setHorizontalSpacing(spacing)#
参数:

spacing - int

setOriginCorner(arg__1)#
参数:

arg__1 - Corner

将网格的起始角(即位置(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()

verticalSpacing()#
返回类型::

int