Qt图形视图框架:QGraphicsLayoutItem(布局项)

一、描述

1、图形视图框架布局项QGraphicsLayoutItem是一个抽象类,它定义了一组虚函数,用于描述 QGraphicsLayout 排列的任何对象的大小、大小策略和大小提示。

2、子类化 QGraphicsLayoutItem:如果创建 QGraphicsLayoutItem 的子类并重新实现其虚函数,则可以启用布局来调整项目的大小和位置以及其他 QGraphicsLayoutItem,包括 QGraphicsWidget QGraphicsLayout

3、嵌套 QGraphicsLayout 项:QGraphicsLayoutItems 可以嵌套在其他 QGraphicsLayoutItems 中,类似于可以包含子布局的布局。 这是通过将 QGraphicsLayoutItem 指针传递给 QGraphicsLayoutItem 的构造函数或通过调用 setParentLayoutItem() 来完成的。

二、成员函数

1、QRectF contentsRect()

以本地坐标返回上下文矩形范围。在布局排列布局项时使用此函数定义矩形范围。

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

返回此布局项的有效大小提示。

3、QRectF geometry()

返回布局项的几何形状。此函数等效于QRectF(pos(),size())。

 4、[virtual] void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom)

获取左、上、右和下内容边距。默认实现假定所有内容边距均为0。

5、QGraphicsItem *graphicsItem() / void setGraphicsItem(QGraphicsItem *item)

此布局项表示的 QGraphicsItem。

6、bool isLayout()

如果此 QGraphicsLayoutItem 是布局(QGraphicsLayout也是继承QGraphicsLayoutItem的)则返回 true。

7、bool ownedByLayout() / void setOwnedByLayout(bool ownership)

布局是否应在其析构函数中删除当前布局项。

如果为true,则布局将删除它。如果为false,则假定另一个对象拥有它的所有权,并且布局不会删除该布局项。

如果该布局项同时继承QGraphicsItem和QGraphicsLayoutItem(如QGraphicsWidget),则该布局项实际包含在两个所有权层次结构中,布局项究竟由谁来销毁可以由用户自定义设置。此属性通知布局在销毁时应对其子项执行的操作。对于QGraphicsWidget,最好是在删除布局时不会删除其子项(因为它们也是图形项层次结构的一部分)。

默认情况下,此值在 QGraphicsLayoutItem 中初始化为 false,但它会被 QGraphicsLayout 覆盖以返回 true。 这是因为 QGraphicsLayout 通常不是 QGraphicsItem 层次结构的一部分(它是在QGraphicsItem层次结构外管理图形项的),所以父布局应该删除它。

 8、QGraphicsLayoutItem *parentLayoutItem() / void setParentLayoutItem(QGraphicsLayoutItem *parent)

返回此 QGraphicsLayoutItem 的父级,如果没有父级,或者父级不从 QGraphicsLayoutItem 继承则返回 nullptr。

9、[virtual] void setGeometry(const QRectF &rect)

设置布局项的几何形状。它在父坐标中(例如,rect 的左上角相当于父坐标中项目的位置)。必须在 QGraphicsLayoutItem 的子类中重新实现此函数。布局在进行重新排列时将调用此函数。如果 rect 在 minimumSize 和 maximumSize 的范围之外,它将被调整到最接近的大小,以便它在合法范围内。

10、setMaximumHeight()、setMaximumSize()、setMaximumWidth()、setMinimumHeight()、setMinimumSize()、setMinimumWidth()

设置布局项的最大最小尺寸。

最小尺寸覆盖sizeHint(Qt::MinimumSize) 并为 effectiveSizeHint(Qt::MinimumSize) 提供默认值。要取消设置最小大小,请使用无效大小(-1)。

最大尺寸覆盖sizeHint(Qt::MaximumSize) 并为 effectiveSizeHint(Qt::MaximumSize) 提供默认值。要取消设置最大大小,请使用无效大小(-1)。

11、setPreferredHeight()、setPreferredSize()、setPreferredWidth()

设置布局项的首选尺寸。首选尺寸覆盖sizeHint(Qt::PreferredSize) 并为 effectiveSizeHint(Qt::PreferredSize) 提供默认值。要取消设置首选大小,请使用无效大小(-1)。

12、void setSizePolicy(const QSizePolicy &policy) / QSizePolicy sizePolicy() 

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

布局项的默认大小策略是 (QSizePolicy::Fixed, QSizePolicy::Fixed)。

13、[纯虚函数] QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF())

返回布局项的大小提示,使用约束宽、高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值