本页内容

QHoverEvent Class

QHoverEvent 类包含描述鼠标事件的参数。更多内容...

头文件: #include <QHoverEvent>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
继承自: QSinglePointEvent

公共函数

QHoverEvent(QEvent::Type type, const QPointF &scenePos, const QPointF &globalPos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier, const QPointingDevice *device = QPointingDevice::primaryPointingDevice())
QPoint oldPos() const
QPointF oldPosF() const

受保护函数

QHoverEvent(QHoverEvent &&)
QHoverEvent &operator=(QHoverEvent &&)
QHoverEvent &operator=(const QHoverEvent &other)

详细说明

当鼠标光标移入、移出或位于小部件内时,如果该小部件具有Qt::WA_Hover 属性,则会发生鼠标事件。

函数position() 返回当前光标位置,而oldPos() 返回旧的光标位置。

QEvent::HoverEnter 和QEvent::HoverLeave 事件与QEvent::Enter 和QEvent::Leave 事件之间存在一些相似之处。但是,由于我们在 HoverEnter 和 HoverLeave 的事件处理程序中执行了 update(),因此它们略有不同。

QEvent::HoverMove 与QEvent::MouseMove 也有细微差别。让我们考虑一个顶级窗口 A,其中包含子窗口 B,而 B 又包含子窗口 C(所有窗口均启用了鼠标跟踪):

显示小部件 A、B、C 堆叠在一起的屏幕截图

现在,如果你将光标从 A 的顶部向底部移动,经过 A 的中间区域,你会收到以下QEvent::MouseMove 事件:

  1. A::MouseMove
  2. B::MouseMove
  3. C::MouseMove

对于QEvent::HoverMove ,您将收到相同的事件,不同之处在于,无论事件是否被接受,它都会一直传播到顶级窗口。只有设置了Qt::WA_NoMousePropagation 属性时,事件传播才会停止。

在此情况下,事件的发生顺序如下:

  1. A::HoverMove
  2. A::HoverMove, B::HoverMove
  3. A::HoverMove, B::HoverMove, C::HoverMove

成员函数文档

QHoverEvent::QHoverEvent(QEvent::Type type, const QPointF &scenePos, const QPointF &globalPos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier, const QPointingDevice *device = QPointingDevice::primaryPointingDevice())

创建一个源自device 的悬停事件对象。

type 参数必须为QEvent::HoverEnter 、QEvent::HoverLeave 或QEvent::HoverMove 。

scenePos 表示当前鼠标光标相对于接收窗口或场景的位置,oldPos 表示其前一个相对位置,globalPos 表示鼠标在绝对坐标系中的位置。modifiers 保存事件发生时所有键盘修饰键的状态。

[protected delete] QHoverEvent::QHoverEvent(QHoverEvent &&)

通过移动构造一个QHoverEvent 实例。该函数已被删除。

QPoint QHoverEvent::oldPos() const

返回鼠标光标相对于接收该事件的小部件的先前位置。如果没有先前位置,oldPos() 将返回与position() 相同的位置。

在QEvent::HoverEnter 事件中,该位置始终为QPoint (-1, -1)。

另请参阅 position()。

QPointF QHoverEvent::oldPosF() const

返回鼠标光标相对于接收该事件的控件的先前位置。如果不存在先前位置,oldPosF() 将返回与position() 相同的位置。

在QEvent::HoverEnter 事件中,该位置始终为QPointF (-1, -1)。

另请参阅 position()。

[protected delete] QHoverEvent &QHoverEvent::operator=(QHoverEvent &&)

将other 通过“移动赋值”操作赋值给此QHoverEvent 实例。该函数已被删除。

[noexcept protected default] QHoverEvent &QHoverEvent::operator=(const QHoverEvent &other)

将other 复制并赋值给该QHoverEvent 实例。

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