PySide6.QtWidgets.QGraphicsLayoutItem

class QGraphicsLayoutItem

QGraphicsLayoutItem 类可以被继承,以允许您的自定义项由布局管理。更多

继承者: QGraphicsLayout, QGraphicsLinearLayout, QGraphicsGridLayout, QGraphicsAnchorLayout, QGraphicsWidget, QGraphicsProxyWidget, QLegend, QChart, QPolarChart

概要

方法

虚拟方法

注意

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

详细描述

QGraphicsLayoutItem 是一个抽象类,它定义了一组虚拟函数,用于描述由 QGraphicsLayout 排列的任何对象的大小、大小策略和大小提示。该API包含了与项目本身和项目用户相关的函数,因为大多数 QGraphicsLayoutItem 的函数也是子类公共API的一部分。

在大多数情况下,现有的布局感知类,如QGraphicsWidgetQGraphicsLayout,已经提供了你所需的功能。然而,子类化这些类将使你能够创建与布局良好配合的图形元素(QGraphicsWidget)或自定义布局(QGraphicsLayout)。

子类化 QGraphicsLayoutItem

如果你创建了一个QGraphicsLayoutItem的子类并重新实现了它的虚函数,你将使布局能够调整大小并定位你的项目,包括QGraphicsWidgetQGraphicsLayout在内的其他QGraphicsLayoutItems。

你可以从重新实现重要的函数开始:受保护的sizeHint()函数,以及公共的setGeometry()函数。如果你希望你的项目能够立即感知到几何变化,你也可以重新实现updateGeometry()

几何形状、大小提示和大小策略会影响项目的大小和位置。调用setGeometry()将始终立即调整项目的大小和位置。通常,此函数在布局激活后由QGraphicsLayout调用,但项目的用户也可以随时调用它。

sizeHint() 函数返回项目的最小、首选和最大尺寸提示。您可以通过调用 setMinimumSize()setPreferredSize()setMaximumSize() 来覆盖这些属性。您还可以使用诸如 setMinimumWidth()setMaximumHeight() 等函数来仅设置宽度或高度组件(如果需要)。

另一方面,effectiveSizeHint() 函数返回任何给定 Qt::SizeHint 的大小提示,并保证返回的大小受最小和最大大小及大小提示的限制。您可以通过调用 setSizePolicy() 来设置项目的垂直和水平大小策略。sizePolicy 属性由布局系统使用,用于描述该项目如何倾向于增长或缩小。

嵌套 QGraphicsLayoutItems

QGraphicsLayoutItems 可以嵌套在其他 QGraphicsLayoutItems 中,类似于可以包含子布局的布局。这可以通过将 QGraphicsLayoutItem 指针传递给 QGraphicsLayoutItem 的保护构造函数,或者通过调用 setParentLayoutItem() 来实现。parentLayoutItem() 函数返回指向项目布局项父级的指针。如果项目的父级是 None 或者父级不继承自 QGraphicsItem,则 parentLayoutItem() 函数返回 NoneisLayout() 如果 QGraphicsLayoutItem 子类本身是一个布局,则返回 true,否则返回 false。

Qt 使用 QGraphicsLayoutItemGraphics View Framework 中提供布局功能,但未来其使用可能会扩展到整个 Qt 本身。

__init__([parent=None[, isLayout=false]])
Parameters:

构建QGraphicsLayoutItem对象。parent成为该对象的父对象。如果isLayout为true,则该项是一个布局,否则isLayout为false。

contentsRect()
Return type:

QRectF

返回本地坐标中的内容矩形。

内容矩形定义了在排列子项时关联布局使用的子矩形。此函数是一个便捷函数,通过其内容边距调整项目的geometry()。请注意,getContentsMargins()是一个虚拟函数,您可以重新实现它以返回项目的内容边距。

effectiveSizeHint(which[, constraint=QSizeF()])
Parameters:
Return type:

QSizeF

返回此QGraphicsLayoutItem的有效大小提示。

which 是所讨论的大小提示。constraint 是一个可选参数,用于在计算有效大小提示时定义特殊约束。默认情况下,constraint 是 QSizeF(-1, -1),这意味着对大小提示没有约束。

如果你想为给定宽度或高度指定小部件的大小提示,你可以在constraint中提供固定尺寸。这对于只能垂直或水平增长的小部件非常有用,并且需要将其宽度或高度设置为特定值。

例如,一个适合200列宽的文本段落项目可能会垂直增长。你可以传递QSizeF(200, -1)作为约束来获得合适的最小、首选和最大高度。

您可以通过在QGraphicsLayoutItem子类中重新实现sizeHint(),或者通过调用以下函数之一来调整有效大小提示:setMinimumSize()setPreferredSizesetMaximumSize()(或两者的组合)。

此函数缓存每个大小提示,并保证对于每个which的值,sizeHint()只会被调用一次 - 除非未指定constraint并且已经调用了updateGeometry()

另请参阅

sizeHint()

geometry()
Return type:

QRectF

返回项目的几何形状(例如,位置和大小)作为QRectF。此函数等同于QRectF(pos(), size())。

另请参阅

setGeometry()

getContentsMargins()
Return type:

PyObject

此虚拟函数为此QGraphicsLayoutItem提供lefttoprightbottom内容边距。默认实现假设所有内容边距均为0。参数指向存储在qreals中的值。如果任何指针为None,则该值将不会更新。

另请参阅

setContentsMargins()

graphicsItem()
Return type:

QGraphicsItem

返回此布局项所表示的QGraphicsItem。对于QGraphicsWidget,它将返回自身。对于自定义项,它可以返回一个聚合值。

另请参阅

setGraphicsItem()

isEmpty()
Return type:

布尔

如果此项为空,即没有内容且不应占用任何空间,则返回true

默认实现返回true如果项目已被隐藏,除非其size policy的retainSizeWhenHidden设置为true

另请参阅

sizePolicy()

isLayout()
Return type:

布尔

如果这个QGraphicsLayoutItem是一个布局(例如,被一个安排其他QGraphicsLayoutItem对象的对象继承),则返回true;否则返回false

另请参阅

QGraphicsLayout

maximumHeight()
Return type:

浮点数

返回最大高度。

maximumSize()
Return type:

QSizeF

返回最大尺寸。

maximumWidth()
Return type:

浮点数

返回最大宽度。

minimumHeight()
Return type:

浮点数

返回最小高度。

minimumSize()
Return type:

QSizeF

返回最小尺寸。

minimumWidth()
Return type:

浮点数

返回最小宽度。

ownedByLayout()
Return type:

布尔

返回布局是否应在其析构函数中删除此项。如果为真,则布局将删除它。如果为假,则假定另一个对象拥有它,布局不会删除此项。

如果项目同时继承QGraphicsItemQGraphicsLayoutItem(例如QGraphicsWidget),那么该项目实际上属于两个所有权层次结构。此属性指示布局在销毁时应如何处理其子项目。对于QGraphicsWidget,建议在删除布局时不要删除其子项目(因为它们也是图形项目层次结构的一部分)。

默认情况下,这个值在QGraphicsLayoutItem中被初始化为false,但被QGraphicsLayout覆盖以返回true。这是因为QGraphicsLayout通常不是QGraphicsItem层次结构的一部分,所以父布局应该删除它。子类可以通过调用setOwnedByLayout (true)来覆盖这个默认行为。

另请参阅

setOwnedByLayout()

parentLayoutItem()
Return type:

QGraphicsLayoutItem

返回此QGraphicsLayoutItem的父级,如果没有父级,或者父级不继承自QGraphicsLayoutItem,则返回NoneQGraphicsLayoutItem通常通过多重继承与QObject派生的类一起使用)。

另请参阅

setParentLayoutItem()

preferredHeight()
Return type:

浮点数

返回首选高度。

preferredSize()
Return type:

QSizeF

返回首选大小。

preferredWidth()
Return type:

浮点数

返回首选宽度。

setGeometry(rect)
Parameters:

矩形QRectF

此虚函数将QGraphicsLayoutItem的几何形状设置为rect,该矩形位于父坐标系中(例如,rect的左上角等同于项目在父坐标系中的位置)。

你必须在QGraphicsLayoutItem的子类中重新实现此函数以接收几何更新。布局在进行重新排列时将调用此函数。

如果 rect 超出了 minimumSizemaximumSize 的范围,它将被调整到最接近的尺寸,以便在合法范围内。

另请参阅

geometry()

setGraphicsItem(item)
Parameters:

项目QGraphicsItem

如果 QGraphicsLayoutItem 代表一个 QGraphicsItem,并且它希望利用 QGraphicsLayout 的自动重新父级功能,它应该设置这个值。请注意,如果你删除了 item 而没有删除布局项,你有责任调用 setGraphicsItem(None) 以避免出现悬空指针。

另请参阅

graphicsItem()

setMaximumHeight(height)
Parameters:

height – 浮点数

设置最大高度为 height

setMaximumSize(size)
Parameters:

大小QSizeF

设置最大尺寸为size。此属性会覆盖sizeHint()的Qt::MaximumSize,并确保effectiveSizeHint()永远不会返回大于size的尺寸。要取消设置最大尺寸,请使用无效尺寸。

setMaximumSize(w, h)
Parameters:
  • w – 浮点数

  • h – 浮点数

这个便捷函数等同于调用 setMaximumSize (QSizeF(w, h))。

setMaximumWidth(width)
Parameters:

width – 浮点数

设置最大宽度为 width

setMinimumHeight(height)
Parameters:

height – 浮点数

设置最小高度为 height

setMinimumSize(size)
Parameters:

大小QSizeF

设置最小尺寸为size。此属性会覆盖sizeHint()对于Qt::MinimumSize的设置,并确保effectiveSizeHint()永远不会返回小于size的尺寸。要取消最小尺寸的设置,请使用无效尺寸。

setMinimumSize(w, h)
Parameters:
  • w – 浮点数

  • h – 浮点数

这个便捷函数等同于调用 setMinimumSize (QSizeF(w, h))。

setMinimumWidth(width)
Parameters:

width – 浮点数

设置最小宽度为 width

setOwnedByLayout(ownedByLayout)
Parameters:

ownedByLayout – 布尔值

设置布局是否应在其析构函数中删除此项。ownership必须为true,以便布局删除它。

另请参阅

ownedByLayout()

setParentLayoutItem(parent)
Parameters:

父级QGraphicsLayoutItem

将此QGraphicsLayoutItem的父级设置为parent

另请参阅

parentLayoutItem()

setPreferredHeight(height)
Parameters:

height – 浮点数

将首选高度设置为 height

setPreferredSize(size)
Parameters:

大小QSizeF

将首选大小设置为size。此属性会覆盖sizeHint()对于Qt::PreferredSize的设置,并为effectiveSizeHint()提供默认值。要取消设置首选大小,请使用无效的大小。

setPreferredSize(w, h)
Parameters:
  • w – 浮点数

  • h – 浮点数

这个便捷函数等同于调用 setPreferredSize (QSizeF(w, h))。

setPreferredWidth(width)
Parameters:

width – 浮点数

将首选宽度设置为 width

setSizePolicy(policy)
Parameters:

策略QSizePolicy

设置大小策略为policy。大小策略描述了当项目在布局中排列时,应如何水平和垂直增长。

QGraphicsLayoutItem 的默认大小策略是 (Fixed, Fixed, DefaultType),但子类通常会更改默认值。例如,QGraphicsWidget 默认为 (Preferred, Preferred, DefaultType)。

另请参阅

sizePolicy() sizePolicy()

setSizePolicy(hPolicy, vPolicy[, controlType=QSizePolicy.DefaultType])
Parameters:

这是一个重载函数。

此函数等同于调用 setSizePolicy ( QSizePolicy (hPolicy, vPolicy, controlType))。

另请参阅

sizePolicy() sizePolicy()

abstract sizeHint(which[, constraint=QSizeF()])
Parameters:
Return type:

QSizeF

这个纯虚函数返回QGraphicsLayoutItem的大小提示,使用constraint的宽度或高度来约束输出。

QGraphicsLayoutItem的子类中重新实现此函数,以为您的项目提供必要的大小提示。

另请参阅

effectiveSizeHint()

sizePolicy()
Return type:

QSizePolicy

返回当前的大小策略。

updateGeometry()

此虚函数会丢弃任何缓存的大小提示信息。如果您更改了sizeHint()函数的返回值,您应始终调用此函数。子类在重新实现此函数时,必须始终调用基类的实现。

另请参阅

effectiveSizeHint()