QGraphicsLayoutItem 类

QGraphicsLayoutItem 类可以继承,以便您的自定义项可以由布局管理。 [更多...](#details)

头文件 #include <QGraphicsLayoutItem>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自

QGraphicsLayoutQGraphicsWidget

公共函数

QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false)
virtual~QGraphicsLayoutItem()
QRectFcontentsRect() const
QSizeFeffectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
QRectFgeometry() const
virtual voidgetContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
QGraphicsItem *graphicsItem() const
(since 6.0) virtual boolisEmpty() const
boolisLayout() const
qrealmaximumHeight() const
QSizeFmaximumSize() const
qrealmaximumWidth() const
qrealminimumHeight() const
QSizeFminimumSize() const
qrealminimumWidth() const
boolownedByLayout() const
QGraphicsLayoutItem *parentLayoutItem() const
qrealpreferredHeight() const
QSizeFpreferredSize() const
qrealpreferredWidth() const
virtual voidsetGeometry(const QRectF &rect)
voidsetMaximumHeight(qreal height)
voidsetMaximumSize(const QSizeF &size)
voidsetMaximumSize(qreal width, qreal height)
voidsetMaximumWidth(qreal width)
voidsetMinimumHeight(qreal height)
voidsetMinimumSize(const QSizeF &size)
voidsetMinimumSize(qreal w, qreal h)
voidsetMinimumWidth(qreal width)
voidsetParentLayoutItem(QGraphicsLayoutItem *parent)
voidsetPreferredHeight(qreal height)
voidsetPreferredSize(const QSizeF &size)
voidsetPreferredSize(qreal w, qreal h)
voidsetPreferredWidth(qreal width)
voidsetSizePolicy(const QSizePolicy &policy)
voidsetSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType)
QSizePolicysizePolicy() const
virtual void更新几何信息()

受保护的函数

voidsetGraphicsItem(QGraphicsItem *item)
voidsetOwnedByLayout(bool ownership)
virtual QSizeFsizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0

详细描述

QGraphicsLayoutItem 是一个抽象类,定义了由 QGraphicsLayout 安排的任何对象的尺寸、尺寸策略和尺寸提示的虚拟函数集合。该 API 包含与项目自身以及用户使用项目的相关函数,因为 QGraphicsLayoutItem 的许多函数也包含在子类的公共 API 中。

在大多数情况下,现有的布局感知类,如 QGraphicsWidgetQGraphicsLayout,已提供您所需的功能。但是,继承这些类将使您能够创建既适用于布局(QGraphicsWidget)又适用于自定义布局(QGraphicsLayout)的图形元素。

继承 QGraphicsLayoutItem

如果您创建 QGraphicsLayoutItem 的子类并重新实现了其虚拟函数,则可以启用布局来调整大小和位置您的项目,包括 QGraphicsWidgetQGraphicsLayout 等 QGraphicsLayoutItem。

您可以从重新实现重要函数开始:受保护的 sizeHint() 函数,以及公共的 setGeometry() 函数。如果要使项目能够了解即时几何信息更改,您还可以重新实现 updateGeometry()。

几何信息、尺寸提示和尺寸策略影响项目的尺寸和位置。调用 setGeometry() 将始终立即调整大小和重新定位项目。通常,此函数在布局激活后由 QGraphicsLayout 调用,但它也可以在任何时间由项目的用户调用。

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

另一个函数 effectiveSizeHint() 返回针对任何特定的 Qt::SizeHint 的大小提示,并保证返回的大小在最小值和最大值以及大小提示的范围内。您可以通过调用 setSizePolicy() 来设置项的垂直和水平大小策略。 sizePolicy 属性被布局系统用来描述此项如何倾向于扩展或收缩。

嵌套 QGraphicsLayoutItems

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

Qt 使用 QGraphicsLayoutItem 在Graphics View 框架中提供布局功能,但在将来它的使用可能会扩展到整个 Qt。

另见QGraphicsWidgetQGraphicsLayoutQGraphicsLinearLayoutQGraphicsGridLayout

成员函数文档

QGraphicsLayoutItem::QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false)

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

[虚拟非异常] QGraphicsLayoutItem::~QGraphicsLayoutItem()

销毁 QGraphicsLayoutItem 对象。

QRectF QGraphicsLayoutItem::contentsRect() const

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

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

另见getContentsMargins() 和 geometry

QSizeF QGraphicsLayoutItem::effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const

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

which 是需要的大小提示。 constraint 是一个可选参数,当计算有效大小提示时定义了一个特殊情况。默认情况下,constraintQSizeF(-1, -1),表示没有对大小提示的约束。

如果您想根据给定的宽度或高度指定小部件的大小提示,您可以通过提供固定维度来做到这一点,即 约束。这对于只能垂直或水平扩展的小部件很有用,需要将它们的宽度或高度设置为特定值。

例如,一个能够适应200像素列宽的文本段落项可能会垂直扩展。您可以将 QSizeF(200, -1) 作为约束传递,以获取合适的最小、首选和最大高度。

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

此函数为每个大小提示缓存,并保证仅在 which 的每个值上调用一次 sizeHint() - 除非未指定 约束 并且调用了 updateGeometry()。

另请参阅 sizeHint()。

QRectF QGraphicsLayoutItem::geometry() const

QRectF 形式返回项的几何形状(例如,位置和大小)。此函数与 QRectF(pos(), size()) 相等。

另请参阅 setGeometry()。

[虚拟] void QGraphicsLayoutItem::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const

此虚拟函数为这个 QGraphicsLayoutItem 提供了左侧、上侧、右侧和下侧的内容边距。默认实现假定所有内容边距都是0。参数指向存储在 qreals 中的值。如果任一指针是 nullptr,则不会更新该值。

另请参阅 QGraphicsWidget::setContentsMargins

QGraphicsItem *QGraphicsLayoutItem::graphicsItem() const

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

另请参阅 setGraphicsItem()。

[虚拟,自6.0以来] bool QGraphicsLayoutItem::isEmpty() const

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

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

此函数从 Qt 6.0 开始引入。

另请参阅 sizePolicy

bool QGraphicsLayoutItem::isLayout() const

如果这个 QGraphicsLayoutItem 是一个布局(例如,它是由一个包含其他 QGraphicsLayoutItem 对象的对象继承而来),则返回 true;否则返回 false

另请参阅 QGraphicsLayout

qreal QGraphicsLayoutItem::maximumHeight() const

返回最大高度。

另请参阅 setMaximumHeight(),setMaximumSize() 和 maximumSize

QSizeF QGraphicsLayoutItem::maximumSize() const

返回最大尺寸。

另请参阅 setMaximumSize(),minimumSize(),preferredSize(),Qt::MaximumSizesizeHint

qreal QGraphicsLayoutItem::maximumWidth() const

返回最大宽度。

另请参阅 setMaximumWidth(),setMaximumSize() 和 maximumSize

qreal QGraphicsLayoutItem::minimumHeight() const

返回最小高度。

另请参阅 setMinimumHeight(),setMinimumSize() 和 minimumSize

QSizeF QGraphicsLayoutItem::minimumSize() const

返回最小尺寸。

另请参阅 setMinimumSize(),preferredSize(),maximumSize(),Qt::MinimumSizesizeHint

qreal QGraphicsLayoutItem::minimumWidth() const

返回最小宽度。

另请参阅 setMinimumWidth(),setMinimumSize() 和 minimumSize

bool QGraphicsLayoutItem::ownedByLayout() const

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

如果项目同时继承 QGraphicsItemQGraphicsLayoutItem(例如 QGraphicsWidget),则项目实际是两个所有权层次结构的一部分。此属性告诉布局在销毁时对其子项目应做什么。在 QGraphicsWidget 的例子中,当布局被删除时不受青睐删除其子项(因为它们也是图形项层次结构的一部分)。

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

另请参阅setOwnedByLayout

QGraphicsLayoutItem *QGraphicsLayoutItem::parentLayoutItem() const

返回此QGraphicsLayoutItem的父级,如果没有父级或父级未从QGraphicsLayoutItem继承,则返回nullptrQGraphicsLayoutItem通常与QObject-derived classes一起通过多重继承使用)。

另请参阅setParentLayoutItem

qreal QGraphicsLayoutItem::preferredHeight() const

返回首选高度。

另请参阅setPreferredHeightsetPreferredSizepreferredSize

QSizeF QGraphicsLayoutItem::preferredSize() const

返回首选大小。

另请参阅setPreferredSizeminimumSizemaximumSizeQt::PreferredSizesizeHint

qreal QGraphicsLayoutItem::preferredWidth() const

返回首选宽度。

另请参阅setPreferredWidthsetPreferredSizepreferredSize

[虚函数] void QGraphicsLayoutItem::setGeometry(const QRectF &rect)

此虚拟函数将QGraphicsLayoutItem的几何形状设置到rect,该矩形以父级坐标为准(例如,rect的左上角与项目在父级坐标中的位置相等)。

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

如果rect超出了minimumSizemaximumSize的边界,则将其调整为最接近的大小,使得它位于有效边界内。

另请参阅geometry

[保护函数] void QGraphicsLayoutItem::setGraphicsItem(QGraphicsItem *item)

如果 QGraphicsLayoutItem 表示一个 QGraphicsItem,并且它想利用 QGraphicsLayout 的自动重新父化功能,则应设置此值。请注意,如果您删除了 item 但没有删除布局项,您需要负责调用 setGraphicsItem(nullptr) 以避免出现悬挂指针。

另请参阅 graphicsItem

void QGraphicsLayoutItem::setMaximumHeight(qreal height)

设置最大高度为 height

另请参阅 maximumHeight(),setMaximumSize() 和 maximumSize

void QGraphicsLayoutItem::setMaximumSize(const QSizeF &size)

设置最大尺寸为 size。此属性覆盖了 sizeHint() 对 Qt::MaximumSize 的设置,并保证 effectiveSizeHint() 从不返回大于 size 的大小。为了取消最大尺寸设置,请使用无效的尺寸。

另请参阅 maximumSize(),minimumSize(),preferredSize(),Qt::MaximumSizesizeHint

void QGraphicsLayoutItem::setMaximumSize(qreal w, qreal h)

此便捷函数相当于调用 setMaximumSize(QSizeF(w, h))。

另请参阅 maximumSize(),setMinimumSize(),setPreferredSize() 和 sizeHint

void QGraphicsLayoutItem::setMaximumWidth(qreal width)

设置最大宽度为 width

另请参阅 maximumWidth(),setMaximumSize() 和 maximumSize

void QGraphicsLayoutItem::setMinimumHeight(qreal height)

设置最小高度为 height

另请参阅 minimumHeight(),setMinimumSize() 和 minimumSize

void QGraphicsLayoutItem::setMinimumSize(const QSizeF &size)

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

另请参阅 minimumSize(),maximumSize(),preferredSize(),Qt::MinimumSizesizeHint(),setMinimumWidth() 和 setMinimumHeight()。

void QGraphicsLayoutItem::setMinimumSize(qreal w, qreal h)

此便捷函数等价于调用 setMinimumSize(QSizeF(w, h))。

另请参阅 minimumSize(),setMaximumSize(),setPreferredSize() 和 sizeHint()。

void QGraphicsLayoutItem::setMinimumWidth(qreal width)

设置最小宽度为 width

另请参阅 minimumWidth(),setMinimumSize() 和 minimumSize()。

[protected] void QGraphicsLayoutItem::setOwnedByLayout(bool ownership)

设置布局是否应在析构函数中删除此项。要使布局能够删除它,ownership 必须为 true。

另请参阅 ownedByLayout()。

void QGraphicsLayoutItem::setParentLayoutItem(QGraphicsLayoutItem *parent)

将此 QGraphicsLayoutItem 的父级设置为 parent

另请参阅 parentLayoutItem()。

void QGraphicsLayoutItem::setPreferredHeight(qreal height)

设置首选高度为 height

另请参阅 preferredHeight(),preferredWidth(),setPreferredSize() 和 preferredSize()。

void QGraphicsLayoutItem::setPreferredSize(const QSizeF &size)

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

另请参阅 preferredSize(),minimumSize(),maximumSize(),Qt::PreferredSizesizeHint()。

void QGraphicsLayoutItem::setPreferredSize(qreal w, qreal h)

此便捷函数等价于调用 setPreferredSize(QSizeF(w, h))。

另请参阅 preferredSize(),setMaximumSize(),setMinimumSize(),以及sizeHint()。

void QGraphicsLayoutItem::setPreferredWidth(qreal 宽度)

将首选宽度设置为宽度

另请参阅 preferredWidth(),preferredHeight(),setPreferredSize(),以及preferredSize()。

void QGraphicsLayoutItem::setSizePolicy(const QSizePolicy &策略)

设置大小策略为策略。大小策略描述了项目如何在布局中按照水平方向和垂直方向进行扩展。

QGraphicsLayoutItem的默认大小策略是(QSizePolicy::FixedQSizePolicy::FixedQSizePolicy::DefaultType),但子类通常会更改默认设置。例如,QGraphicsWidget的默认设置是(《a href="qsizepolicy.html#Policy-enum" translate="no">QSizePolicy::Preferred,QSizePolicy::PreferredQSizePolicy::DefaultType)。

另请参阅 sizePolicy()以及QWidget::sizePolicy()。

void QGraphicsLayoutItem::setSizePolicy(QSizePolicy::Policy hPolicyQSizePolicy::Policy vPolicyQSizePolicy::ControlType controlType = QSizePolicy::DefaultType)

这是一个重载函数。

此函数与调用setSizePolicy(QSizePolicy水平策略垂直策略控件类型))等价。

另请参阅 sizePolicy()以及QWidget::sizePolicy()。

[纯虚保护] QSizeF QGraphicsLayoutItem::sizeHint(Qt::SizeHint which,const QSizeF &constraint = QSizeF()) const

此纯虚函数返回QGraphicsLayoutItem的which的大小提示,使用约束的宽度和高度来约束输出。

在QGraphicsLayoutItem的子类中重写此函数,以提供项目所需的大小提示。

另请参阅 effectiveSizeHint()。

QSizePolicy QGraphicsLayoutItem::sizePolicy() const

返回当前大小策略。

另请参阅 setSizePolicy()以及QWidget::sizePolicy()。

[虚函数] void QGraphicsLayoutItem::updateGeometry()

此虚函数丢弃任何缓存的尺寸提示信息。每当您更改sizeHint()函数的返回值时,您都应调用此函数。子类在重写此函数时必须始终调用基类实现。

另请参阅 effectiveSizeHint()。

© 2024 Qt公司有限公司。本文档中包含的文档贡献为各自所有者的版权。本提供的文档根据自由软件基金会的发布,许可在GNU自由文档许可证1.3版的条款下使用。Qt及其相应标志是Qt公司在芬兰和/或其他国家/地区的商标。商标均属于其各自所有者。