PySide6.QtWidgets.QLayout

class QLayout

QLayout 类是几何管理器的基类。更多

PySide6.QtWidgets.QLayout 的继承图

继承自: QStackedLayout, QGridLayout, QFormLayout, QBoxLayout, QVBoxLayout, QHBoxLayout

概要

属性

方法

虚拟方法

静态函数

注意

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

详细描述

这是一个抽象基类,由具体类QBoxLayoutQGridLayoutQFormLayoutQStackedLayout继承。

对于QLayout子类或QMainWindow的用户来说,很少需要使用QLayout提供的基本功能,例如setSizeConstraint()setMenuBar()。更多信息请参见布局管理

要创建自己的布局管理器,请实现函数 addItem()sizeHint()setGeometry()itemAt()takeAt()。你还应该实现 minimumSize() 以确保在空间不足时,你的布局不会被调整为零大小。为了支持高度依赖于宽度的子项,请实现 hasHeightForWidth()heightForWidth()。有关实现自定义布局管理器的更多信息,请参阅 Flow Layout 示例。

当布局管理器被删除时,几何管理停止。

另请参阅

QLayoutItem 布局管理 基本布局示例 流布局示例

class SizeConstraint

可能的值为:

常量

描述

QLayout.SetDefaultConstraint

主控件的最小尺寸设置为 minimumSize(),除非控件已经有一个最小尺寸。

QLayout.SetFixedSize

主窗口的大小设置为 sizeHint();它完全不能调整大小。

QLayout.SetMinimumSize

主控件的最小尺寸设置为minimumSize();它不能更小。

QLayout.SetMaximumSize

主控件的最大尺寸设置为maximumSize();它不能更大。

QLayout.SetMinAndMaxSize

主控件的最小尺寸设置为 minimumSize(),最大尺寸设置为 maximumSize()

QLayout.SetNoConstraint

该部件不受约束。

另请参阅

setSizeConstraint()

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property contentsMarginsᅟ: QMargins
Access functions:
property sizeConstraintᅟ: QLayout.SizeConstraint

此属性保存布局的调整大小模式。

默认模式是 SetDefaultConstraint

Access functions:
property spacingᅟ: int

此属性保存布局内小部件之间的间距。

如果没有显式设置值,布局的间距将从父布局继承,或从父小部件的样式设置中继承。

对于QGridLayoutQFormLayout,可以使用setHorizontalSpacing()setVerticalSpacing()设置不同的水平和垂直间距。在这种情况下,spacing()返回-1。

Access functions:
__init__([parent=None])
Parameters:

父级QWidget

构造一个新的顶级QLayout,父级为parent

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

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

另请参阅

setLayout()

activate()
Return type:

布尔

如有必要,重新布局parentWidget()

通常不需要调用此函数,因为它会在最合适的时间自动调用。如果布局重新完成,则返回true。

另请参阅

update() updateGeometry()

addChildLayout(l)
Parameters:

lQLayout

此函数在子类中的addLayout()insertLayout()函数中被调用,用于将布局childLayout添加为子布局。

唯一需要直接调用它的场景是,如果你实现了一个支持嵌套布局的自定义布局。

addChildWidget(w)
Parameters:

wQWidget

此函数从子类中的addWidget()函数调用,以将w添加为布局的托管小部件。

如果 w 已经被一个布局管理,这个函数将产生一个警告,并从该布局中移除 w。因此,必须在将 w 添加到布局的数据结构之前调用此函数。

abstract addItem(item)
Parameters:

项目QLayoutItem

在子类中实现以添加一个item。如何添加是每个子类特有的。

此函数通常不在应用程序代码中调用。要将小部件添加到布局中,请使用addWidget()函数;要添加子布局,请使用相关QLayout子类提供的addLayout()函数。

注意

item的所有权被转移到布局,布局有责任删除它。

addWidget(w)
Parameters:

wQWidget

以特定于布局的方式将小部件 w 添加到此布局中。此函数使用 addItem()

adoptLayout(layout)
Parameters:

布局QLayout

Return type:

布尔

alignmentRect(r)
Parameters:

rQRect

Return type:

QRect

返回当此布局的几何形状设置为r时应覆盖的矩形,前提是此布局支持setAlignment()

结果来源于 sizeHint()expandingDirections()。它永远不会大于 r

static closestAcceptableSize(w, s)
Parameters:
Return type:

QSize

返回一个满足所有大小约束的大小,包括heightForWidth(),并且尽可能接近size

contentsMargins()
Return type:

QMargins

返回布局周围使用的边距。

默认情况下,QLayout 使用样式提供的值。在大多数平台上,边距在所有方向上均为11像素。

另请参阅

setContentsMargins()

属性 contentsMarginsᅟ 的获取器。

contentsRect()
Return type:

QRect

返回布局的geometry()矩形,但考虑了内容的边距。

abstract count()
Return type:

整数

必须在子类中实现以返回布局中的项目数量。

另请参阅

itemAt()

getContentsMargins()
Return type:

PyObject

对于每个不为Nonelefttoprightbottom,将指针所指向位置的边距大小存储起来。

默认情况下,QLayout 使用样式提供的值。在大多数平台上,边距在所有方向上均为11像素。

indexOf(layoutItem)
Parameters:

layoutItemQLayoutItem

Return type:

整数

在此布局中搜索布局项 layoutItem(不包括子布局)。

返回 layoutItem 的索引,如果未找到 layoutItem 则返回 -1。

indexOf(widget)
Parameters:

widgetQWidget

Return type:

整数

在此布局中搜索小部件 widget(不包括子布局)。

返回widget的索引,如果未找到widget则返回-1。

默认实现使用itemAt()遍历所有项目。

isEnabled()
Return type:

布尔

如果布局已启用,则返回 true;否则返回 false

另请参阅

setEnabled()

abstract itemAt(index)
Parameters:

索引 – int

Return type:

QLayoutItem

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

必须在子类中实现以返回index处的布局项。如果没有这样的项,函数必须返回None。项从0开始连续编号。如果删除了一个项,其他项将重新编号。

此函数可用于遍历布局。以下代码将为小部件布局结构中的每个布局项绘制一个矩形。

def paintLayout(painter, item):

    layout = item.layout()
    if layout:
        for i in range(0, layout.count()):
            paintLayout(painter, layout.itemAt(i))

    painter.drawRect(item.geometry())

def paintEvent(self, arg__0):

    painter = QPainter(self)
    if layout():
        paintLayout(painter, layout())

另请参阅

count() takeAt()

menuBar()
Return type:

QWidget

返回为此布局设置的菜单栏,如果未设置菜单栏,则返回None

另请参阅

setMenuBar()

parentWidget()
Return type:

QWidget

返回此布局的父部件,如果此布局未安装在任何部件上,则返回None

如果布局是子布局,此函数返回父布局的父部件。

另请参阅

parent()

removeItem(item)
Parameters:

项目QLayoutItem

从布局中移除布局项 item。调用者有责任删除该项。

请注意,item 可以是一个布局(因为 QLayout 继承自 QLayoutItem)。

另请参阅

removeWidget() addItem()

removeWidget(w)
Parameters:

wQWidget

从布局中移除小部件 widget。在此调用之后,调用者有责任为小部件设置合理的几何形状,或将小部件放回布局中,或在必要时显式隐藏它。

注意

widget 的所有权与添加时保持不变。

replaceWidget(from, to[, options=Qt.FindChildrenRecursively])
Parameters:
Return type:

QLayoutItem

搜索小部件 from 并在找到时将其替换为小部件 to。成功时返回包含小部件 from 的布局项。否则返回 None。如果 options 包含 Qt::FindChildrenRecursively(默认情况下),则会搜索子布局以进行替换。options 中的任何其他标志将被忽略。

请注意,返回的项目可能不属于此布局,而是属于子布局。

返回的布局项不再由布局拥有,应删除或插入到另一个布局中。小部件from不再由布局管理,可能需要删除或隐藏。小部件from的父级保持不变。

此函数适用于内置的Qt布局,但可能不适用于自定义布局。

另请参阅

indexOf()

setAlignment(l, alignment)
Parameters:
Return type:

布尔

这是一个重载函数。

设置布局 l 的对齐方式为 alignment,如果在此布局中找到 l(不包括子布局),则返回 true;否则返回 false

setAlignment(w, alignment)
Parameters:
Return type:

布尔

将小部件 w 的对齐方式设置为 alignment,如果在此布局中找到 w(不包括子布局),则返回 true;否则返回 false

setContentsMargins(margins)
Parameters:

边距QMargins

设置用于布局周围的边距

默认情况下,QLayout 使用样式提供的值。在大多数平台上,边距在所有方向上均为11像素。

另请参阅

contentsMargins()

属性 contentsMarginsᅟ 的设置器。

setContentsMargins(left, top, right, bottom)
Parameters:
  • left – int

  • top – int

  • right – int

  • bottom – int

设置布局周围使用的lefttoprightbottom边距。

默认情况下,QLayout 使用样式提供的值。在大多数平台上,边距在所有方向上均为11像素。

setEnabled(enable)
Parameters:

enable – 布尔值

如果 enable 为真,则启用此布局,否则禁用它。

启用的布局会动态调整以适应变化;禁用的布局则表现得像不存在一样。

默认情况下,所有布局都已启用。

另请参阅

isEnabled()

setMenuBar(w)
Parameters:

wQWidget

告诉几何管理器将菜单栏 widget 放置在 parentWidget() 的顶部,位于 contentsMargins() 之外。所有子部件都放置在菜单栏底边的下方。

另请参阅

menuBar()

setSizeConstraint(arg__1)
Parameters:

arg__1SizeConstraint

另请参阅

sizeConstraint()

属性 sizeConstraintᅟ 的设置器。

setSpacing(arg__1)
Parameters:

arg__1 – 整数

另请参阅

spacing()

属性 spacingᅟ 的设置器。

sizeConstraint()
Return type:

SizeConstraint

另请参阅

setSizeConstraint()

属性 sizeConstraintᅟ 的获取器。

spacing()
Return type:

整数

另请参阅

setSpacing()

属性 spacingᅟ 的获取器。

abstract takeAt(index)
Parameters:

索引 – int

Return type:

QLayoutItem

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

必须在子类中实现,以从布局中移除位于index处的布局项,并返回该项。如果没有这样的项,函数必须不执行任何操作并返回0。项从0开始连续编号。如果移除了一个项,其他项将重新编号。

以下代码片段展示了从布局中安全移除所有项目的方法:

child = QLayoutItem()
while (child = layout.takeAt(0)) != None:
    ...
    del child.widget() # del the widget
    del child   # del the layout item

另请参阅

itemAt() count()

totalHeightForWidth(w)
Parameters:

w – 整数

Return type:

整数

totalMaximumSize()
Return type:

QSize

totalMinimumHeightForWidth(w)
Parameters:

w – 整数

Return type:

整数

totalMinimumSize()
Return type:

QSize

totalSizeHint()
Return type:

QSize

unsetContentsMargins()

取消布局周围任何用户定义的边距。布局将使用样式提供的默认值。

另请参阅

setContentsMargins()

属性 contentsMarginsᅟ 的重置功能。

update()

更新parentWidget()的布局。

通常你不需要调用这个,因为它会在最合适的时候自动调用。

另请参阅

activate() invalidate()

widgetEvent(arg__1)
Parameters:

arg__1QEvent