PySide6.QtWidgets.QGraphicsAnchorLayout¶
- class QGraphicsAnchorLayout¶
QGraphicsAnchorLayout类提供了一种布局,可以在图形视图中将小部件锚定在一起。更多…在版本4.6中添加。
概要¶
方法¶
def
__init__()def
addAnchor()def
addAnchors()def
anchor()def
setSpacing()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
锚点布局允许开发者指定小部件应如何相对于彼此以及布局本身进行放置。通过调用
addAnchor()、addAnchors()或addCornerAnchors()向布局添加锚点来进行规范。布局中的现有锚点可以通过
anchor()函数访问。被锚定的项目会自动添加到布局中,如果项目被移除,它们的所有锚点也会自动移除。
使用锚点布局来对齐简单的彩色小部件。锚点总是设置在项目的边缘之间,其中“中心”也被视为一个边缘。考虑以下示例:
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:
firstItem –
QGraphicsLayoutItemfirstEdge –
AnchorPointsecondItem –
QGraphicsLayoutItemsecondEdge –
AnchorPoint
- Return type:
在项目
firstItem的边缘firstEdge和项目secondItem的边缘secondEdge之间创建一个锚点。锚点的间距从样式中获取。布局边缘和项目边缘之间的锚点大小为0。如果边缘之间已经存在锚点,新的锚点将替换旧的锚点。firstItem和secondItem如果不在布局中,会自动添加到布局中。这意味着count()最多可以增加2。锚点的间距取决于锚点的类型。例如,从一个项目的右边缘到另一个项目的左边缘(或反之亦然)的锚点将使用默认的水平间距。相同的行为适用于从底部到顶部的锚点(但它们将使用默认的垂直间距)。对于所有其他锚点组合,间距将为0。所有锚定函数都将遵循此规则。
间距也可以通过使用
setSpacing()方法手动设置。调用此函数时,如果
firstItem或secondItem是布局的祖先,则行为未定义。- addAnchors(firstItem, secondItem[, orientations=Qt.Horizontal | Qt.Vertical])¶
- Parameters:
firstItem –
QGraphicsLayoutItemsecondItem –
QGraphicsLayoutItemorientations –
Orientation的组合
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
将
firstItem的两个或四个边与secondItem的对应边锚定,使得firstItem在orientations指定的维度中具有与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:
firstItem –
QGraphicsLayoutItemfirstCorner –
CornersecondItem –
QGraphicsLayoutItemsecondCorner –
Corner
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
在由角落指定的
firstItem和secondItem之间创建两个锚点,firstCorner和secondCorner,其中一个用于水平边缘,另一个用于垂直边缘。这是一个便捷函数,因为锚定角落可以表示为锚定两条边。例如:
layout.addAnchor(a, Qt.AnchorTop, layout, Qt.AnchorTop) layout.addAnchor(a, Qt.AnchorLeft, layout, Qt.AnchorLeft)
这也可以通过以下代码行实现:
layout.addCornerAnchors(a, Qt.TopLeftCorner, layout, Qt.TopLeftCorner)
如果边对之间已经存在锚点,它将被此函数指定的锚点替换。
firstItem和secondItem如果不在布局中,会自动添加到布局中。这意味着count()最多可以增加2。另请参阅
- anchor(firstItem, firstEdge, secondItem, secondEdge)¶
- Parameters:
firstItem –
QGraphicsLayoutItemfirstEdge –
AnchorPointsecondItem –
QGraphicsLayoutItemsecondEdge –
AnchorPoint
- Return type:
返回由
firstItem和firstEdge以及secondItem和secondEdge定义的锚点之间的锚点。如果没有这样的锚点,函数将返回0。- horizontalSpacing()¶
- Return type:
浮点数
返回锚点布局的默认水平间距。
- setHorizontalSpacing(spacing)¶
- Parameters:
间距 – float
将锚点布局的默认水平间距设置为
spacing。- setSpacing(spacing)¶
- Parameters:
间距 – float
将锚点布局的默认水平和垂直间距设置为
spacing。如果一个项目被锚定且没有与锚点相关的间距,它将使用默认间距。
QGraphicsAnchorLayout不支持负间距。设置负值将取消之前的间距,并使布局使用当前小部件样式提供的间距。- setVerticalSpacing(spacing)¶
- Parameters:
间距 – float
将锚点布局的默认垂直间距设置为
spacing。- verticalSpacing()¶
- Return type:
浮点数
返回锚点布局的默认垂直间距。