- 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])#
- 参数::
parent –
QGraphicsLayoutItem
构造一个
QGraphicsAnchorLayout
实例。将parent
传递给QGraphicsLayout
的构造函数。- addAnchor(firstItem, firstEdge, secondItem, secondEdge)#
- 参数::
firstItem –
QGraphicsLayoutItem
firstEdge –
AnchorPoint
secondItem –
QGraphicsLayoutItem
secondEdge –
AnchorPoint
- 返回类型:
创建一个锚点,将项目
firstItem
的边firstEdge
与项目secondItem
的边secondEdge
之间的锚点。锚点的间距取自样式。布局边和项目边的锚点将有 0 大小。如果已有这两个边之间的锚点,新锚点将替换旧锚点。firstItem
和secondItem
如果不是布局的一部分,将自动添加到布局中。这意味着count()
可以增加到最多 2。锚点将获得的间距取决于锚点的类型。例如,来自一个物品的右侧边到另一个物品的左侧边(或反之)的锚点将使用默认的水平间距。相同的操作适用于从底部到顶部的锚点(但它们将使用默认的垂直间距)。对于所有其他锚点组合,间距将为 0。所有锚定函数都将遵循此规则。
还可以通过使用
setSpacing()
方法手动设置间距。如果
firstItem
或secondItem
是布局的祖先,调用此函数将出现未定义行为。- addAnchors(firstItem, secondItem[, orientations=Qt.Horizontal | Qt.Vertical])#
- 参数::
firstItem –
QGraphicsLayoutItem
secondItem –
QGraphicsLayoutItem
orientations –
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)#
- 参数::
firstItem –
QGraphicsLayoutItem
firstCorner –
Corner
secondItem –
QGraphicsLayoutItem
secondCorner –
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)#
- 参数::
firstItem –
QGraphicsLayoutItem
firstEdge –
AnchorPoint
secondItem –
QGraphicsLayoutItem
secondEdge –
AnchorPoint
- 返回类型:
返回由firstItem和firstEdge定义的锚点和由secondItem和secondEdge定义的锚点之间的锚点。如果没有这样的锚点,则函数将返回0。
- horizontalSpacing()#
- 返回类型:
float
返回锚定布局的默认水平间距。
- setHorizontalSpacing(spacing)#
- 参数::
间距 – 浮点数
将锚点布局的默认水平间距设置为
间距
。- setSpacing(间距)#
- 参数::
间距 – 浮点数
将锚点布局的默认水平和垂直间距设置为
间距
。如果某个项目未被锚定且未与锚点关联间距,则它将使用默认间距。
QGraphicsAnchorLayout
不支持负间距。设置负值将取消之前设置的间距,并将布局切换到使用当前小部件样式提供的间距。- setVerticalSpacing(间距)#
- 参数::
间距 – 浮点数
将锚点布局的默认垂直间距设置为
间距
。- verticalSpacing()#
- 返回类型:
float
返回锚点布局的默认垂直间距。