【发布时间】:2014-08-18 16:55:12
【问题描述】:
我试图通过重新实现QWidget::mouseMoveEvent() 在QWidget 内移动鼠标时捕获光标坐标。启用鼠标跟踪后,当我在主小部件周围移动光标时会生成鼠标移动事件。但是,当光标放在子小部件上时,鼠标移动事件将停止触发。
当光标在同一个子部件上时,鼠标按下/释放事件起作用,如果按住鼠标按钮,移动事件会正确触发。我也尝试过对孩子启用鼠标跟踪,但似乎没有什么不同。 当鼠标悬停在子部件上时如何触发鼠标移动事件?
这是一个演示问题的最小工作示例:
import sys
from PyQt4 import QtCore, QtGui
class MyWindow(QtGui.QWidget) :
def __init__(self):
QtGui.QWidget.__init__(self)
tabs = QtGui.QTabWidget()
tab1 = QtGui.QWidget()
tab2 = QtGui.QWidget()
tabs.addTab(tab1, "Tab 1")
tabs.addTab(tab2, "Tab 2")
layout = QtGui.QVBoxLayout()
layout.addWidget(tabs)
self.setLayout(layout)
self.setMouseTracking(True)
def mouseMoveEvent(self, event):
print 'mouseMoveEvent: x=%d, y=%d' % (event.x(), event.y())
app = QtGui.QApplication(sys.argv)
window = MyWindow()
window.setFixedSize(640, 480)
window.show()
sys.exit(app.exec_())
当鼠标移出QTabWidget 时,鼠标坐标会按预期打印。在它里面什么都不会发生,除非按住鼠标按钮。
【问题讨论】: