PySide6.QtWidgets.QGridLayout

class QGridLayout

QGridLayout 类以网格形式布局小部件。更多

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、2和4列由QLabelQLineEdit和QListBox组成。第1和3列是使用setColumnMinimumWidth()创建的占位符。第0行由三个QLabel对象组成,第1行由三个QLineEdit对象组成,第2行由三个QListBox对象组成。我们使用了占位列(1和3)来在列之间获得适当的间距。

请注意,列和行的宽度或高度并不相等。如果你希望两列具有相同的宽度,你必须自己设置它们的最小宽度和拉伸因子相同。你可以使用setColumnMinimumWidth()setColumnStretch()来实现这一点。

如果QGridLayout不是顶级布局(即不管理所有小部件的区域和子部件),在创建它时,你必须将其添加到其父布局中,但在对其进行任何操作之前。添加布局的常规方法是在父布局上调用addLayout()

一旦你添加了布局,你就可以开始使用addWidget()addItem()addLayout()将小部件和其他布局放入网格布局的单元格中。

QGridLayout 还包括两个边距宽度:contents marginspacing()。内容边距是沿QGridLayout的四个边保留的空间宽度。spacing()是相邻框之间自动分配的间距宽度。

默认的内容边距值由style提供。Qt样式为子部件指定的默认值为9,为窗口指定的默认值为11。对于顶级布局,间距默认与边距宽度相同,或者与父布局相同。

另请参阅

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

__init__([parent=None])
Parameters:

父级QWidget

构造一个新的QGridLayout,其父部件为parent。该布局最初有一行和一列,并在插入新项目时扩展。

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

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

另请参阅

setLayout()

addItem(item, row, column[, rowSpan=1[, columnSpan=1[, alignment=Qt.Alignment()]]])
Parameters:
  • 项目QLayoutItem

  • row – int

  • column – 整数

  • rowSpan – int

  • columnSpan – int

  • alignmentAlignmentFlag 的组合

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

警告

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

addLayout(layout, row, column[, alignment=Qt.Alignment()])
Parameters:

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

  • alignmentAlignmentFlag 的组合

这是一个重载函数。

此版本将布局 layout 添加到单元格网格中,跨越多个行/列。单元格将从 rowcolumn 开始,跨越 rowSpan 行和 columnSpan 列。

如果 rowSpan 和/或 columnSpan 为 -1,则布局将分别延伸到底部和/或右侧边缘。

addWidget(widget, row, column[, alignment=Qt.Alignment()])
Parameters:

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

对齐方式由alignment指定。默认对齐方式为0,这意味着小部件将填充整个单元格。

addWidget(widget, row, column, rowSpan, columnSpan[, alignment=Qt.Alignment()])
Parameters:
  • widgetQWidget

  • row – int

  • column – 整数

  • rowSpan – int

  • columnSpan – int

  • alignmentAlignmentFlag 的组合

这是一个重载函数。

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

如果 rowSpan 和/或 columnSpan 为 -1,则小部件将分别延伸到底部和/或右侧边缘。

cellRect(row, column)
Parameters:
  • row – int

  • column – 整数

Return type:

QRect

返回网格中行row和列column的几何形状。如果rowcolumn超出网格范围,则返回一个无效的矩形。

警告

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

columnCount()
Return type:

整数

返回此网格中的列数。

columnMinimumWidth(column)
Parameters:

– int

Return type:

整数

返回列 column 的列间距。

columnStretch(column)
Parameters:

– int

Return type:

整数

返回列 column 的拉伸因子。

另请参阅

setColumnStretch()

getItemPosition(idx)
Parameters:

idx – 整数

Return type:

PyObject*

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

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

另请参阅

itemAtPosition() itemAt()

horizontalSpacing()
Return type:

整数

另请参阅

setHorizontalSpacing()

itemAtPosition(row, column)
Parameters:
  • row – int

  • column – 整数

Return type:

QLayoutItem

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

originCorner()
Return type:

Corner

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

另请参阅

setOriginCorner()

rowCount()
Return type:

整数

返回此网格中的行数。

rowMinimumHeight(row)
Parameters:

– 整数

Return type:

整数

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

另请参阅

setRowMinimumHeight()

rowStretch(row)
Parameters:

– 整数

Return type:

整数

返回行 row 的拉伸因子。

另请参阅

setRowStretch()

setColumnMinimumWidth(column, minSize)
Parameters:
  • column – 整数

  • minSize – int

将列 column 的最小宽度设置为 minSize 像素。

setColumnStretch(column, stretch)
Parameters:
  • column – 整数

  • stretch – int

将列 column 的拉伸因子设置为 stretch。第一列的编号为0。

拉伸因子相对于此网格中的其他列。具有较高拉伸因子的列会占用更多的可用空间。

默认的拉伸因子是0。如果拉伸因子是0,并且此表中没有其他列可以增长,该列仍然可能增长。

另一种方法是使用addItem()QSpacerItem来添加间距。

setDefaultPositioning(n, orient)
Parameters:
  • n – 整数

  • orient方向

setHorizontalSpacing(spacing)
Parameters:

间距 – int

另请参阅

horizontalSpacing()

setOriginCorner(corner)
Parameters:

角落Corner

将网格的起始角,即位置 (0, 0),设置为 corner

另请参阅

originCorner()

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()

verticalSpacing()
Return type:

整数

另请参阅

setVerticalSpacing()