1

我有一个简单的父小部件,它重新实现了 mousePressEvent/mouseReleaseEvent。父级的子小部件使用 enterEvent/leaveEvent。当我将鼠标悬停在子小部件上时, leaveEvent/enterEvent 会执行,但是当我单击并按住鼠标时,mousePressEvent 会执行,但 enterEvent/leaveEvent 会静音(换句话说,没有单击和拖动)。关于可能导致这种情况的任何想法?

4

1 回答 1

4

如果您按住小部件上的鼠标按钮,则该小部件会抓取鼠标事件,直到您释放按钮。这不是 Qt 的特殊功能,您可以在我知道的所有其他 GUI API 中找到类似的行为。

查看 Qt 文档的相关部分:

QWidget / 事件

当鼠标光标在窗口小部件内时按下鼠标按钮,或者当窗口小部件使用grabMouse() 抓取鼠标时,将调用mousePressEvent()。按下鼠标而不释放它实际上与调用grabMouse() 相同。

无效 QWidget::grabMouse ()

抓取鼠标输入。此小部件接收所有鼠标事件,直到调用 releaseMouse();其他小部件根本没有鼠标事件

于 2012-04-05T20:11:52.700 回答