我有一个简单的父小部件,它重新实现了mousePressEvent/mouseReleaseEvent。父级的子小部件使用enterEvent/leaveEvent。当我将鼠标悬停在子窗口小部件上时,leaveEvent/enterEvent将执行,但当我单击并按住鼠标时,mousePressEvent将执行,但enterEvent/leaveEvent将静默(换句话说,不再单击和拖动)。你知道这是什么原因造成的吗?
发布于 2012-04-06 04:11:53
如果您在小部件上按下并按住鼠标按钮,那么该小部件将获取鼠标事件,直到您释放该按钮。这不是Qt的一个特殊功能,你可以在我所知道的所有其他GUI API中找到类似的行为。
看看Qt文档的相关部分:
当鼠标光标位于小部件内部时,或者当小部件使用grabMouse()抓住鼠标时,将调用
mousePressEvent()。按下鼠标而不松开它实际上等同于调用grabMouse()。
抓取鼠标输入。此小部件接收所有鼠标事件,直到调用releaseMouse()为止;其他小部件在所有都不接收鼠标事件。
https://stackoverflow.com/questions/10033747
复制相似问题