QFocusFrame Class

QFocusFrame widget 提供了一个焦点框架,它可以位于 widget 的正常可绘制区域之外。更多

头文件: #include <QFocusFrame>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承: QWidget

公共函数

QFocusFrame(QWidget *parent = nullptr)
virtual ~QFocusFrame()
void setWidget(QWidget *widget)
QWidget *widget() const

保护函数

virtual void initStyleOption(QStyleOption *option) const

重新实现的受保护函数

virtual bool event(QEvent *e) override
virtual bool eventFilter(QObject *o, QEvent *e) override
virtual void paintEvent(QPaintEvent *) override

详细说明

通常情况下,应用程序无需创建自己的 QFocusFrame,因为QStyle 会为您处理这一细节。样式编写者可以选择使用 QFocusFrame,在部件的可绘制几何图形之外设置焦点区域。QWidget QFocusFrame::setWidget不过,在自定义 widget 上创建自己的 QFocusFrame 并通过QWidget::setGeometry 手动设置其几何图形也是合法的,但当被聚焦的 widget 改变大小或位置时,您将无法获得自动定位功能。

成员函数文档

QFocusFrame::QFocusFrame(QWidget *parent = nullptr)

构造一个 QFocusFrame。

焦点框不会监控parent 的更新,而是可以手动或使用QFocusFrame::setWidget 放置。QFocusFrame 会设置Qt::WA_NoChildEventsForParent 属性;因此父代不会收到QEvent::ChildAdded 事件,这样就可以在QSplitter 或其他子代事件监控 widget 内手动设置 QFocusFrame 的几何形状。

另请参阅 QFocusFrame::setWidget().

[virtual noexcept] QFocusFrame::~QFocusFrame()

毁灭者

[override virtual protected] bool QFocusFrame::event(QEvent *e)

重实现:QWidget::event(QEvent *event).

[override virtual protected] bool QFocusFrame::eventFilter(QObject *o, QEvent *e)

重实现:QObject::eventFilter(QObject *watched, QEvent *event).

[virtual protected] void QFocusFrame::initStyleOption(QStyleOption *option) const

使用此QFocusFrame 中的值初始化option 。当子类需要QStyleOption ,但又不想自己填写所有信息时,该方法非常有用。

另请参阅 QStyleOption::initFrom()。

[override virtual protected] void QFocusFrame::paintEvent(QPaintEvent *)

重实现:QWidget::paintEvent(QPaintEvent *event).

void QFocusFrame::setWidget(QWidget *widget)

QFocusFrame 将跟踪 的变化,并自动调整自身大小。如果受监控部件的父节点发生变化, 将跟踪该部件,并自动将自身置于该部件周围。如果被监控的 widget 被删除, 会将其设置为零。widget QFocusFrame QFocusFrame

另请参见 QFocusFrame::widget().

QWidget *QFocusFrame::widget() const

返回当前监控的部件,以便自动调整大小和更新。

另请参阅 QFocusFrame::setWidget()。

© 2025 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.