class QLayout#

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

Inheritance diagram of PySide6.QtWidgets.QLayout

继承自: QStackedLayoutQGridLayoutQFormLayoutQBoxLayoutQVBoxLayoutQHBoxLayout

摘要#

属性#

方法#

虚拟方法#

静态函数#

备注

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

详细说明#

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

对于使用《QLayout》子类或使用《QMainWindow》的用户,很少需要使用《QLayout》提供的基本功能,例如,《setSizeConstraint()">()》或《setMenuBar()">()》。有关更多信息,请参阅《布局管理》。

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

几何管理在布局管理器删除后停止。

另请参阅

QLayoutItem Layout Management Basic Layouts Example FlowLayout Example

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 时,可以直接使用属性,否则通过访问函数。

属性contentsMarginsē: QMargins#
访问函数
属性sizeConstraintē: QLayout.SizeConstraint#

此属性持有布局的调整大小模式。

默认模式为 SetDefaultConstraint

访问函数
属性spacingē: int#

此属性持有布局内小部件之间的间距。

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

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

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

parentQWidget

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

布局直接设置为 parent 的顶级布局。一个 widget 只能有一个顶级布局。它通过 layout() 方法返回。

如果 parentNone,则必须将此布局插入到另一个布局中,或使用 setLayout() 方法将其设置为 widget 的布局。

另请参阅

setLayout()

activate()#
返回类型:

布尔值

在需要的情况下重新执行 parentWidget() 的布局。

通常不需要调用此方法,因为它会在最合适的时间自动调用。如果布局已重新执行,则返回 true。

另请参阅

update() updateGeometry()

addChildLayout(l)#
参数:

lQLayout

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

你需要直接调用此函数的唯一情况是你实现了支持嵌套布局的自定义布局。

addChildWidget(w)#
参数:

wQWidget

该函数由子类中的 addWidget() 函数调用,用于将 w 添加为布局的管理小部件。

如果 w 已由布局管理,则此函数将生成警告,并将 w 从该布局中移除。因此,必须在使用 w 添加到布局数据结构之前调用此函数。

抽象addItem(arg__1)#
参数:

arg__1QLayoutItem

在子类中实现,用于添加一个 item。具体的添加方式由每个子类指定。

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

备注

item 的所有权转移给布局,布局负责删除它。

addWidget(w)#
参数:

wQWidget

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

adoptLayout(layout)#
参数:

layoutQLayout

返回类型:

布尔值

alignmentRect(arg__1)#
参数:

arg__1QRect

返回类型:

QRect

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

结果是从 sizeHint()expandingDirections() 得出的。它永远不会大于 r

静态 closestAcceptableSize(w, s)#
参数:
返回类型:

QSize

返回一个满足对控件的所有尺寸约束的尺寸,并且尽可能接近 size 的尺寸。

contentsMargins()#
返回类型:

QMargins

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

默认情况下,QLayout 使用提供由风格。在大多数平台上,边距为11像素,所有方向。

另请参阅

setContentsMargins()

属性 contentsMargins 的获取器。

contentsRect()#
返回类型:

QRect

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

抽象 count()#
返回类型:

int

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

另请参阅

itemAt()

getContentsMargins()#
返回类型:

PyObject

对于每个不是 Nonelefttoprightbottom,将名称为边距大小的值存储在指针指向的位置。

默认情况下,QLayout 使用提供由风格。在大多数平台上,边距为11像素,所有方向。

indexOf(arg__1)#
参数:

arg__1QLayoutItem

返回类型:

int

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

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

indexOf(arg__1)
参数:

arg__1QWidget

返回类型:

int

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

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

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

isEnabled()#
返回类型:

布尔值

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

另请参阅

setEnabled()

抽象itemAt(index)#
参数:

index – int

返回类型:

QLayoutItem

警告

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

必须在子类中实现它以返回索引为index的布局项。如果没有这样的项,则函数必须返回None。项目按顺序从0编号。如果删除了某个项目,其他项目将会重新编号。

此函数可以用来遍历布局。以下代码将绘制widget布局结构的每个布局项的矩形。

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()#
返回类型:

QWidget

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

另请参阅

setMenuBar()

parentWidget()#
返回类型:

QWidget

返回此布局的父组件,如果此布局没有被安装在任何一个组件上,则返回None

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

另请参阅

parent()

removeItem(arg__1)#
参数:

arg__1QLayoutItem

从布局中删除布局项目item。删除项的责任在于调用者。

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

另请参阅

removeWidget() addItem()

removeWidget(w)#
参数:

wQWidget

从布局中删除组件widget。在此调用后,调用者有责任为组件提供一个合理的几何形状,或将组件放回布局中,如在必要时显式隐藏它。

备注

widget的所有权与添加时相同。

replaceWidget(from, to[, options=Qt.FindChildrenRecursively])#
参数:
返回类型:

QLayoutItem

在布局中搜索 widget from,如果找到则替换为 widget to。如果成功,则返回包含 widget from 的布局项。否则返回 None。如果 options 包含 Qt::FindChildrenRecursively(默认值),则会搜索子布局进行替换。忽略 options 中的其他标志。

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

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

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

另请参阅

indexOf()

setAlignment(l, alignment)#
参数:
返回类型:

布尔值

这是一个重载函数。

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

setAlignment(w, alignment)
参数:
返回类型:

布尔值

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

setContentsMargins(margins)#
参数:

marginsQMargins

margins 设置为围绕布局使用的外边距。

默认情况下,QLayout 使用提供由风格。在大多数平台上,边距为11像素,所有方向。

另请参阅

contentsMargins()

属性 contentsMargins 的设置器。

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

  • top – int

  • right – int

  • bottom – int

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

默认情况下,QLayout 使用提供由风格。在大多数平台上,边距为11像素,所有方向。

setEnabled(arg__1)#
参数:

arg__1 – bool

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

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

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

另请参阅

isEnabled()

setMenuBar(w)#
参数:

wQWidget

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

另请参阅

menuBar()

setSizeConstraint(arg__1)#
参数:

arg__1SizeConstraint

另请参阅

sizeConstraint()

属性 sizeConstraintᅟ 的设置器。

setSpacing(arg__1)#
参数:

arg__1 – int

另请参阅

spacing()

属性 spacingᅟ 的设置器。

sizeConstraint()#
返回类型:

SizeConstraint

另请参阅

setSizeConstraint()

属性 sizeConstraintᅟ 的获取器。

spacing()#
返回类型:

int

另请参阅

setSpacing()

属性 spacingᅟ 的获取器。

abstract takeAt(index)#
参数:

index – int

返回类型:

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

w – int

返回类型:

int

totalMaximumSize()#
返回类型:

QSize

totalMinimumHeightForWidth(w)#
参数:

w – int

返回类型:

int

totalMinimumSize()#
返回类型:

QSize

totalSizeHint()#
返回类型:

QSize

unsetContentsMargins()#

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

另请参阅

setContentsMargins()

属性 contentsMarginsᅟ 的重置函数。

update()#

更新 parentWidget() 的布局。

通常不必调用此方法,因为它会在最适当的时机自动调用。

另请参阅

activate() invalidate()

widgetEvent(arg__1)#
参数:

arg__1QEvent