我在 QVBoxLayout 中有多个 QLabel 小部件。
当我按下鼠标左键并开始拖动时(我实际上并没有拖动任何小部件,我只是在按下鼠标左键时移动鼠标光标),其中一个 QLabels 接收 mousePressEvent,并且所有后续的 mouseMoveEvents 都被发送到接收 mousePressEvent 的 QLabel,即使鼠标光标移动到该 QLabel 的边界框之外。
这对我不起作用。如果事件发生在 QLabel 的边界框之外,我希望首先接收 mousePressEvent 的原始 QLabel 停止接收鼠标事件。如果发生这种情况,我希望另一个 QLabel(光标移动到的位置)开始处理鼠标事件。
将鼠标跟踪设置为 true 没有帮助,“锁定”仍然发生。
有什么建议吗?谢谢<3
我实际上正在实现的是我的文档查看器应用程序的文本选择机制。
从文档页面获取像素图并将其设置为 QLabels 的像素图。 当 mousePressEvent 发生时,选择开始并在以下 onMouseMove 事件上继续。但是,当我想从多个页面选择文本并将鼠标光标移动到另一个 QLabel 时,事件仍会发送到原始 QLabel。这就是问题所在。我对单页有功能完善的选择机制。当我意识到 Qt 中鼠标事件是这样工作的时候,问题就出现了。
我录制了一段 1 分钟的短视频来描述问题 - https://youtu.be/m00dV4s1Am8