QLayoutItem类

QLayoutItem是自定义布局的关键类,提供了尺寸计算、对齐、空间管理等功能。文章详细介绍了其成员函数、布局设置和查询,以及高度与宽度的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QLayoutItem类提供了一个抽象的 QLayout(布局管理器)。

Header:#include <QLayoutItem>
CMake:find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake:QT += widgets
Inherited By:

QLayout

QSpacerItem

QWidgetItem


【详细描述】

>  此类在自定义布局时使用,提供纯虚函数来返回关于布局信息,包括:推荐尺寸sizeHint(), minimumSize(), maximumSize() 和扩展方向expandingDirections()。

>  布局的可通过 setGeometry() 和  geometry()方式设置和检索,并可以设置对齐 setAlignment() 和 alignment()。

>  isEmpty() 返回布局项目是否为空。如果具体项是一个QWidget,可以使用 widget(), 类似地布局r layout() 和spacerItem()。

>  有些布局的宽度和高度相互依赖。这些可以用以下公式 hasHeightForWidth(), heightForWidth(), 和  minimumHeightForWidth()进行表示 。有关更多解释,请参见季度季刊文章:《用高度换宽度》 Trading Height for Width

请参见 QLayout


【公有函数】

QLayoutItem(Qt::Alignment alignment = Qt::Alignment())
virtual~QLayoutItem()
Qt::Alignmentalignment() const返回此项的对齐方式。
virtual QSizePolicy::ControlTypescontrolTypes() const返回布局项的控件类型。对于QWidgetItem,控件类型来自控件的尺寸策略;对于 QLayoutItem,控件类型派生自布局的内容。
virtual Qt::OrientationsexpandingDirections() const = 0返回此布局项是否可以利用比  sizeHint() 更多的空间。值 Qt::Vertical 或Qt::Horizontal  表示它只想在一个维度上增长,而 Qt::Vertical | Qt::Horizontal意味着它希望在两个维度上都增长。
virtual QRectgeometry() const = 0返回此布局项所覆盖的矩形。
virtual boolhasHeightForWidth() const

如果此布局的首选高度取决于其宽度,则返回truef;否则返回alse。默认实现返回 false。
在支持高度换宽度的布局管理器中重新实现此功能。

virtual intheightForWidth(int) const

返回此布局项的首选高度(给定宽度),此默认实现中未使用该高度。

默认实现返回 -1,指示首选高度与项的宽度无关。使用函数hasHeightForWidth() 通常比调用此函数并测试 -1 快得多。

在支持高度换宽度的布局管理器中重新实现此功能。典型的实现如下所示:

强烈建议使用缓存;没有它,布局将花费指数级时间。

virtual voidinvalidate()使此布局项中的任何缓存信息失效。
virtual boolisEmpty() const = 0在子类中实现,以返回此项是否为空,即它是否包含任何控件。
virtual QLayout *layout()如果此项是QLayout,则返回为 returned ;否则返回nullptr。
virtual QSizemaximumSize() const = 0在子类中实现,以返回此项的最大尺寸。
virtual intminimumHeightForWidth(int w) const返回此控件在给定宽度w下所需的最小高度。默认实现仅返回 heightForWidth(w)。
virtual QSizeminimumSize() const = 0在子类中实现,以返回此项的最小尺寸。
voidsetAlignment(Qt::Alignment alignment)

设置对齐方式为alignment。

注意:项目对齐仅受具有视觉效果的子类支持。除了QLayoutItem子类,它为布局提供空白空间,所有继承的公共 Qt 类都支持项目对齐。

virtual voidsetGeometry(const QRect &r) = 0在子类中实现,以将此项的几何图形设置为 r 。
virtual QSizesizeHint() const = 0在子类中实现以返回此项的首选大小。
virtual QSpacerItem *spacerItem()如果此项是 QSpacerItem ,则返回这个 QSpacerItem ;否则返回nullptr。
virtual QWidget *widget() const

如果此项目管理一个 QWidget,则返回该控件。否则返回nullptr。

注意: 当函数 layout() 和and spacerItem()执行强制转换时,此函数返回另一个对象: QLayoutQSpacerItem,而不返回QWidget


<<< 返回根页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值