QLayoutItem Class
QLayoutItem 类提供了一个由QLayout 操作的抽象项。更多内容...
| 头文件: | #include <QLayoutItem> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: |
公共函数
| QLayoutItem(Qt::Alignment alignment = Qt::Alignment()) | |
| virtual | ~QLayoutItem() |
| Qt::Alignment | alignment() const |
| virtual QSizePolicy::ControlTypes | controlTypes() const |
| virtual Qt::Orientations | expandingDirections() const = 0 |
| virtual QRect | geometry() const = 0 |
| virtual bool | hasHeightForWidth() const |
| virtual int | heightForWidth(int) const |
| virtual void | invalidate() |
| virtual bool | isEmpty() const = 0 |
| virtual QLayout * | layout() |
| virtual QSize | maximumSize() const = 0 |
| virtual int | minimumHeightForWidth(int w) const |
| virtual QSize | minimumSize() const = 0 |
| void | setAlignment(Qt::Alignment alignment) |
| virtual void | setGeometry(const QRect &r) = 0 |
| virtual QSize | sizeHint() const = 0 |
| virtual QSpacerItem * | spacerItem() |
| virtual QWidget * | widget() const |
详细说明
此功能用于自定义布局。
提供了纯虚函数来返回有关布局的信息,包括sizeHint()、minimumSize()、maximumSize() 和expandingDirections()。
布局的几何形状可通过setGeometry() 和geometry() 进行设置和检索,其对齐方式可通过setAlignment() 和alignment() 进行设置和检索。
isEmpty() 返回布局项是否为空。如果具体项是QWidget ,则可使用widget() 获取其内容。layout() 和spacerItem() 的用法类似。
某些布局的宽度和高度存在相互依赖关系。这些关系可通过hasHeightForWidth()、heightForWidth()和minimumHeightForWidth()来表达。更多说明请参阅《Qt Quarterly》杂志上的文章《以高度换取宽度》。
另请参阅 QLayout 。
成员函数文档
[explicit] QLayoutItem::QLayoutItem(Qt::Alignment alignment = Qt::Alignment())
创建一个带有alignment 的布局项。并非所有子类都支持对齐。
[virtual noexcept] QLayoutItem::~QLayoutItem()
销毁QLayoutItem 。
Qt::Alignment QLayoutItem::alignment() const
返回该项目的对齐方式。
另请参阅 ` setAlignment()`。
[virtual] QSizePolicy::ControlTypes QLayoutItem::controlTypes() const
返回布局项的控件类型。对于QWidgetItem ,控件类型来自小部件的大小策略;对于QLayoutItem ,控件类型来自布局的内容。
另请参阅 QSizePolicy::controlType()。
[pure virtual] Qt::Orientations QLayoutItem::expandingDirections() const
返回此布局项是否可以使用超过 `sizeHint()` 所指定空间的值。值为 `Qt::Vertical ` 或 `Qt::Horizontal ` 表示它仅希望在一个维度上扩展,而 `Qt::Vertical ` 或 `Qt::Horizontal ` 表示它希望在两个维度上同时扩展。
[pure virtual] QRect QLayoutItem::geometry() const
返回该布局项所覆盖的矩形。
另请参阅 ` setGeometry()`。
[virtual] bool QLayoutItem::hasHeightForWidth() const
如果该布局的首选高度取决于其宽度,则返回 `true `;否则返回 `false`。默认实现返回 `false`。
在支持“宽度决定高度”的布局管理器中,请重写此函数。
另请参阅 heightForWidth() 和QWidget::heightForWidth()。
[virtual] int QLayoutItem::heightForWidth(int) const
根据给定的宽度返回此布局项的首选高度,但此默认实现中并未使用该宽度。
默认实现返回 -1,表示首选高度与该项的宽度无关。使用函数 `hasHeightForWidth()` 通常会比调用此函数并检测是否为 -1 快得多。
在支持“宽度对应高度”功能的布局管理器中,请重写此函数。典型的实现方式如下:
int MyLayout::heightForWidth(int w) const
{
if (cache_dirty || cached_width != w) {
MyLayout *that = const_cast<MyLayout *>(this);
int h = calculateHeightForWidth(w);
that->cached_hfw = h;
return h;
}
return cached_hfw;
}强烈建议进行缓存;否则,布局将耗费指数级的时间。
另请参阅 hasHeightForWidth()。
[virtual] void QLayoutItem::invalidate()
清除该布局项中所有已缓存的信息。
[pure virtual] bool QLayoutItem::isEmpty() const
在子类中实现,用于返回该项是否为空,即是否包含任何控件。
[virtual] QLayout *QLayoutItem::layout()
如果该项是QLayout ,则返回QLayout ;否则返回nullptr 。此函数提供了类型安全的强制转换。
另请参阅 spacerItem() 和widget()。
[pure virtual] QSize QLayoutItem::maximumSize() const
在子类中实现,用于返回该项的最大大小。
[virtual] int QLayoutItem::minimumHeightForWidth(int w) const
返回该控件在给定宽度下所需的最小高度,w 。默认实现仅返回heightForWidth (w )。
[pure virtual] QSize QLayoutItem::minimumSize() const
在子类中实现,用于返回该项的最小大小。
void QLayoutItem::setAlignment(Qt::Alignment alignment)
将此项目的对齐方式设置为alignment 。
注意:项目对齐仅由QLayoutItem 的子类支持,且仅在这些子类中会产生视觉效果。除QSpacerItem (该类为布局提供空白区域)外,所有继承QLayoutItem 的公共Qt类均支持项目对齐。
另请参阅 alignment()。
[pure virtual] void QLayoutItem::setGeometry(const QRect &r)
在子类中实现,用于将该项的几何属性设置为r 。
另请参阅 geometry()。
[pure virtual] QSize QLayoutItem::sizeHint() const
在子类中实现,用于返回该项的首选大小。
[virtual] QSpacerItem *QLayoutItem::spacerItem()
如果该项是QSpacerItem ,则返回QSpacerItem ;否则返回nullptr 。此函数提供了类型安全的强制转换。
[virtual] QWidget *QLayoutItem::widget() const
如果该项管理的是一个QWidget ,则返回该控件;否则,返回nullptr 。
注意:虽然 函数layout() 和spacerItem() 执行类型转换,但此函数返回的是另一个对象:QLayout 和QSpacerItem 继承自QLayoutItem ,而QWidget 则不继承。
另请参阅 layout() 和spacerItem()。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.