成功解决!QT 即使设置了 setMouseTracking(true) 也无法实时获取鼠标位置

把这两个属性全部开启即可 。
在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在Qt获取鼠标实时位置,可以使用QCursor类和QMouseEvent类来实现。具体步骤如下: 1. 在你的dialog类中重写mouseMoveEvent函数来处理鼠标移动事件。 ```python def mouseMoveEvent(self, event): x = event.globalX() y = event.globalY() print("Mouse move: ({}, {})".format(x, y)) ``` 这里我们使用globalX()和globalY()方法获取鼠标在屏幕上的全局坐标。 2. 在dialog的构造函数中设置鼠标追踪。 ```python self.setMouseTracking(True) ``` 这样,即使鼠标不在dialog上面,也能够捕捉到鼠标移动事件。 3. 确保你的dialog已经被激活了,否则将无法接收到鼠标移动事件。可以在dialog的show()函数中调用activateWindow()来激活dialog窗口。 ```python self.show() self.activateWindow() ``` 完整代码示例: ```python from PyQt5.QtWidgets import QDialog from PyQt5.QtCore import Qt class MyDialog(QDialog): def __init__(self, parent=None): super(MyDialog, self).__init__(parent) self.setMouseTracking(True) # 设置鼠标追踪 def mouseMoveEvent(self, event): x = event.globalX() y = event.globalY() print("Mouse move: ({}, {})".format(x, y)) if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) dialog = MyDialog() dialog.show() dialog.activateWindow() sys.exit(app.exec_()) ``` 在上面的示例中,我们创建了一个MyDialog类,重写了mouseMoveEvent函数来处理鼠标移动事件。我们还在构造函数中设置鼠标追踪,以便在鼠标移动时能够获取实时位置。最后,我们在show()函数中调用了activateWindow()来激活dialog窗口,确保能够接收到鼠标移动事件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值