PySide6.QtWidgets.QGraphicsLinearLayout

class QGraphicsLinearLayout

QGraphicsLinearLayout 类提供了一个水平或垂直的布局,用于在图形视图中管理小部件。更多

PySide6.QtWidgets.QGraphicsLinearLayout 的继承图

概要

方法

注意

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

详细描述

警告

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

线性布局的默认方向是Qt::Horizontal。你可以通过调用setOrientation(),或者通过将Qt::Vertical传递给QGraphicsLinearLayout的构造函数来选择垂直方向。

使用QGraphicsLinearLayout最常见的方法是在堆上构造一个对象,将父窗口小部件传递给构造函数,然后通过调用addItem()来添加窗口小部件和布局。

scene = QGraphicsScene()
textEdit = scene.addWidget(QTextEdit())
pushButton = scene.addWidget(QPushButton())
form = QGraphicsWidget()
scene.addItem(form)
layout = QGraphicsLinearLayout(form)
layout.addItem(textEdit)
layout.addItem(pushButton)

或者,如果您没有将父部件传递给布局的构造函数,您将需要调用setLayout()来将此布局设置为该部件的顶级布局,该部件将拥有该布局的所有权。

你可以向线性布局添加小部件、布局、拉伸(addStretch()insertStretch()setStretchFactor())和间距(setItemSpacing())。布局将拥有这些项目的所有权。在某些情况下,当布局项目也继承自QGraphicsItem(如QGraphicsWidget)时,所有权会出现歧义,因为布局项目属于两个所有权层次结构。请参阅setOwnedByLayout()的文档以了解如何处理此问题。你可以通过调用count()itemAt()来访问布局中的每个项目。调用removeAt()removeItem()将从布局中移除一个项目,但不会销毁它。

QGraphicsLinearLayout中的大小提示和大小策略

QGraphicsLinearLayout 尊重每个项目的大小提示和大小策略,当布局包含的空间超过项目可以填充的空间时,每个项目将根据该项目的布局对齐方式进行排列。您可以通过调用 setAlignment() 为每个项目设置对齐方式,并通过调用 alignment() 检查任何项目的对齐方式。默认情况下,项目对齐到左上角。

QGraphicsLinearLayout 中的间距

在项目之间,布局会分配一些空间。实际的空间量取决于管理的小部件的当前样式,但常见的间距是4。您也可以通过调用setSpacing()来设置自己的间距,并通过调用spacing()来获取当前的间距值。如果您想为您的项目配置单独的间距,您可以调用setItemSpacing()

QGraphicsLinearLayout中的拉伸因子

您可以为每个项目分配一个拉伸因子,以控制它与其他项目相比将获得多少空间。默认情况下,排列在线性布局中的两个相同的小部件将具有相同的大小,但如果第一个小部件的拉伸因子为1,第二个小部件的拉伸因子为2,则第一个小部件将获得可用空间的1/3,第二个小部件将获得2/3。

QGraphicsLinearLayout 通过将所有项目的拉伸因子相加,然后相应地分配可用空间来计算大小的分布。所有项目的默认拉伸因子为0;因子为0意味着该项目没有任何定义的拉伸因子;实际上这与将拉伸因子设置为1相同。拉伸因子仅适用于布局长度方向上的可用空间(遵循其方向)。如果您想同时控制项目的水平和垂直拉伸,可以使用QGraphicsGridLayout

QGraphicsLinearLayout 与其他布局的比较

QGraphicsLinearLayoutQVBoxLayoutQHBoxLayout 非常相似,但与这些类不同的是,它用于管理 QGraphicsWidgetQGraphicsLayout,而不是 QWidgetQLayout

__init__([parent=None])
Parameters:

父级QGraphicsLayoutItem

使用Qt::Horizontal方向构造一个QGraphicsLinearLayout实例。parent被传递给QGraphicsLayout的构造函数。

__init__(orientation[, parent=None])
Parameters:

构建一个QGraphicsLinearLayout实例。你可以传递布局的orientation,可以是水平或垂直,parent则传递给QGraphicsLayout的构造函数。

addItem(item)
Parameters:

项目QGraphicsLayoutItem

这个便捷函数等同于调用 insertItem (-1, item)。

addStretch([stretch=1])
Parameters:

stretch – 整数

这个便捷函数等同于调用 insertStretch (-1, stretch)。

alignment(item)
Parameters:

项目QGraphicsLayoutItem

Return type:

AlignmentFlag 的组合

返回item的对齐方式。默认对齐方式是Qt::AlignTop | Qt::AlignLeft。

对齐方式决定了在布局中有比小部件可以占据的更多空间的情况下,项目如何在其分配的空间内定位。

另请参阅

setAlignment()

dump([indent=0])
Parameters:

缩进 – int

insertItem(index, item)
Parameters:

item 插入到布局中的 index 位置,或者插入到当前位于 index 位置的任何项目之前。

insertStretch(index[, stretch=1])
Parameters:
  • index – 整数

  • stretch – int

index处插入一段stretch,或在当前位于index的任何项目之前插入。

itemSpacing(index)
Parameters:

索引 – int

Return type:

浮点数

返回在index处项目之后的间距。

另请参阅

setItemSpacing()

orientation()
Return type:

方向

返回布局方向。

另请参阅

setOrientation()

removeItem(item)
Parameters:

项目QGraphicsLayoutItem

从布局中移除item而不销毁它。item的所有权转移给调用者。

另请参阅

removeAt() insertItem()

setAlignment(item, alignment)
Parameters:

item的对齐方式设置为alignment。如果item的对齐方式发生变化,布局将自动失效。

另请参阅

alignment() invalidate()

setItemSpacing(index, spacing)
Parameters:
  • index – 整数

  • spacing – 浮点数

index处的项目后的间距设置为spacing

另请参阅

itemSpacing()

setOrientation(orientation)
Parameters:

方向Orientation

将布局方向更改为orientation。更改布局方向将自动使布局无效。

另请参阅

orientation()

setSpacing(spacing)
Parameters:

间距 – float

将布局的间距设置为 spacing。间距指的是项目之间的垂直和水平距离。

setStretchFactor(item, stretch)
Parameters:

item的拉伸因子设置为stretch。如果项目的拉伸因子发生变化,此函数将使布局无效。

stretch设置为0会从项目中移除拉伸因子,实际上等同于将stretch设置为1。

另请参阅

stretchFactor()

spacing()
Return type:

浮点数

返回布局的间距。间距指的是项目之间的垂直和水平距离。

另请参阅

setSpacing()

stretchFactor(item)
Parameters:

项目QGraphicsLayoutItem

Return type:

整数

返回item的拉伸因子。默认的拉伸因子是0,意味着该项目没有分配拉伸因子。

另请参阅

setStretchFactor()