PySide6.QtWidgets.QGraphicsAnchorLayout

class QGraphicsAnchorLayout

QGraphicsAnchorLayout 类提供了一种布局,可以在图形视图中将小部件锚定在一起。更多

PySide6.QtWidgets.QGraphicsAnchorLayout 的继承图

在版本4.6中添加。

概要

方法

注意

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

详细描述

警告

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

锚点布局允许开发者指定小部件应如何相对于彼此以及布局本身进行放置。通过调用addAnchor()addAnchors()addCornerAnchors()向布局添加锚点来进行规范。

布局中的现有锚点可以通过anchor()函数访问。被锚定的项目会自动添加到布局中,如果项目被移除,它们的所有锚点也会自动移除。

simpleanchorlayout-example1 使用锚点布局来对齐简单的彩色小部件。

锚点总是设置在项目的边缘之间,其中“中心”也被视为一个边缘。考虑以下示例:

layout.addAnchor(b, Qt.AnchorLeft, a, Qt.AnchorRight)
layout.addAnchor(b, Qt.AnchorTop, a, Qt.AnchorBottom)

在这里,项目a的右边缘锚定到项目b的左边缘,项目a的底边缘锚定到项目b的顶边缘,结果是项目b将放置在项目b的右下方对角线位置。

addCornerAnchors() 函数提供了一种比上面代码中显示的两个单独的 addAnchor() 调用更简单的方式来锚定两个小部件的角落。在这里,我们看到了如何将一个小部件锚定到包含布局的左上角:

layout.addCornerAnchors(a, Qt.TopLeftCorner, layout, Qt.TopLeftCorner)

在使用锚点来匹配小部件的宽度或高度的情况下,使用addAnchors()函数非常方便。与其他用于指定锚点的函数一样,它也可以用于将小部件锚定到布局中。

锚点布局中的大小提示和大小策略

QGraphicsAnchorLayout 尊重每个项目的大小提示和大小策略。请注意,QSizePolicy 的一些属性是 不被尊重 的。

锚点布局内的间距

布局可能会在项目之间分配一些空间。如果未明确指定间距,实际的空间量通常为0。

然而,如果第一条边是第二条边的相反边(例如,第一个小部件的右边固定到第二个小部件的左边),则锚点的大小将通过像素度量从样式中查询:PM_LayoutHorizontalSpacing用于水平锚点,PM_LayoutVerticalSpacing用于垂直锚点。

如果间距为负,项目将在一定程度上重叠。

已知问题

有一些功能是QGraphicsAnchorLayout目前不支持的。这可能会在未来发生变化,因此如果您想避免未来行为上的任何回归,请避免使用这些功能:

  • 拉伸因子未被遵守。

  • ExpandFlag 未被遵守。

  • 宽度的高度未被遵守。

__init__([parent=None])
Parameters:

父级QGraphicsLayoutItem

构建一个QGraphicsAnchorLayout实例。parent被传递给QGraphicsLayout的构造函数。

addAnchor(firstItem, firstEdge, secondItem, secondEdge)
Parameters:
Return type:

QGraphicsAnchor

在项目firstItem的边缘firstEdge和项目secondItem的边缘secondEdge之间创建一个锚点。锚点的间距从样式中获取。布局边缘和项目边缘之间的锚点大小为0。如果边缘之间已经存在锚点,新的锚点将替换旧的锚点。

firstItemsecondItem 如果不在布局中,会自动添加到布局中。这意味着 count() 最多可以增加2。

锚点的间距取决于锚点的类型。例如,从一个项目的右边缘到另一个项目的左边缘(或反之亦然)的锚点将使用默认的水平间距。相同的行为适用于从底部到顶部的锚点(但它们将使用默认的垂直间距)。对于所有其他锚点组合,间距将为0。所有锚定函数都将遵循此规则。

间距也可以通过使用setSpacing()方法手动设置。

调用此函数时,如果firstItemsecondItem是布局的祖先,则行为未定义。

addAnchors(firstItem, secondItem[, orientations=Qt.Horizontal | Qt.Vertical])
Parameters:

警告

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

firstItem的两个或四个边与secondItem的对应边锚定,使得firstItemorientations指定的维度中具有与secondItem相同的大小。

例如,以下示例将两个项目的左右边缘锚定以匹配它们的宽度:

layout.addAnchor(b, Qt.AnchorLeft, c, Qt.AnchorLeft)
layout.addAnchor(b, Qt.AnchorRight, c, Qt.AnchorRight)

这也可以通过以下代码行实现:

layout.addAnchors(b, c, Qt.Horizontal)
addCornerAnchors(firstItem, firstCorner, secondItem, secondCorner)
Parameters:

警告

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

在由角落指定的firstItemsecondItem之间创建两个锚点,firstCornersecondCorner,其中一个用于水平边缘,另一个用于垂直边缘。

这是一个便捷函数,因为锚定角落可以表示为锚定两条边。例如:

layout.addAnchor(a, Qt.AnchorTop, layout, Qt.AnchorTop)
layout.addAnchor(a, Qt.AnchorLeft, layout, Qt.AnchorLeft)

这也可以通过以下代码行实现:

layout.addCornerAnchors(a, Qt.TopLeftCorner, layout, Qt.TopLeftCorner)

如果边对之间已经存在锚点,它将被此函数指定的锚点替换。

firstItemsecondItem 如果不在布局中,会自动添加到布局中。这意味着 count() 最多可以增加2。

另请参阅

addAnchor() addAnchors()

anchor(firstItem, firstEdge, secondItem, secondEdge)
Parameters:
Return type:

QGraphicsAnchor

返回由firstItemfirstEdge以及secondItemsecondEdge定义的锚点之间的锚点。如果没有这样的锚点,函数将返回0。

horizontalSpacing()
Return type:

浮点数

返回锚点布局的默认水平间距。

setHorizontalSpacing(spacing)
Parameters:

间距 – float

将锚点布局的默认水平间距设置为 spacing

setSpacing(spacing)
Parameters:

间距 – float

将锚点布局的默认水平和垂直间距设置为 spacing

如果一个项目被锚定且没有与锚点相关的间距,它将使用默认间距。

QGraphicsAnchorLayout 不支持负间距。设置负值将取消之前的间距,并使布局使用当前小部件样式提供的间距。

setVerticalSpacing(spacing)
Parameters:

间距 – float

将锚点布局的默认垂直间距设置为 spacing

verticalSpacing()
Return type:

浮点数

返回锚点布局的默认垂直间距。