即使按下鼠标按钮,我也需要检测鼠标指针是否离开我的自定义小部件。
根据this post,如果按下按钮,Qt不会导致leaveEvent
,至少不会在4.4版本中。我正在使用4.7.3,但在描述的情况下仍然没有得到leaveEvent
。我也试过各种与拖拽相关的事件,但没有运气。有没有人知道如何处理这个?
答案 0 :(得分:3)
实际上比使用父窗口小部件的鼠标事件有更好的选择:您可以实现子窗口小部件的mouseMoveEvent
功能并获得相对于左上角的QMouseEvent::pos()
位置小部件的一角。这意味着,如果您知道窗口小部件的大小(例如QWidget::rect()
),则可以在窗口小部件内计算鼠标指针是否仍在窗口小部件上,而无需更改父窗口小部件。
答案 1 :(得分:2)
好吧,我做了类似于@gregseth的事情。
编写从MouseMoveEvent调用的自己的MouseLeaveEvent 当鼠标的位置在小部件的边界之外时。
正如Qt的文档所说“只有按下鼠标按钮才会发生鼠标移动事件”
答案 2 :(得分:1)
我遇到了同样的问题。我找到的唯一解决方法是管理父窗口小部件的mouseMove
事件,并检查光标的位置是否在您想要事件所在的窗口小部件的边界之内或之外。