PyQt4鼠标移动事件:查找widget
PyQt4 mouse move event: find widget
如何找到触发事件的是哪个小部件?该位置相对于其下方任何小部件的原点。我想将事件限制为只有一个 wiget。
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.MouseMove:
if event.buttons() == QtCore.Qt.NoButton:
pos = event.pos()
self.statusbar.showMessage("mouse tracked at {} x {}".format(pos.x(), pos.y()))
print(dir(event))
# self.edit.setText('x: %d, y: %d' % (pos.x(), pos.y()))
return QtGui.QMainWindow.eventFilter(self, source, event)
通过 eventFilter
传递的事件仅限于明确安装了事件过滤器的小部件。如果只有一个小部件安装了事件过滤器,则 source
参数只能是那个小部件。
如果多个小部件在同一个过滤对象上安装了一个事件过滤器,您可以使用身份检查来区分它们:
def eventFilter(self, source, event):
if (event.type() == QtCore.QEvent.MouseMove and
event.buttons() == QtCore.Qt.NoButton and
source is self.myInterestingWidget):
# do stuff with event...
print(event.pos())
return QtGui.QMainWindow.eventFilter(self, source, event)
如何找到触发事件的是哪个小部件?该位置相对于其下方任何小部件的原点。我想将事件限制为只有一个 wiget。
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.MouseMove:
if event.buttons() == QtCore.Qt.NoButton:
pos = event.pos()
self.statusbar.showMessage("mouse tracked at {} x {}".format(pos.x(), pos.y()))
print(dir(event))
# self.edit.setText('x: %d, y: %d' % (pos.x(), pos.y()))
return QtGui.QMainWindow.eventFilter(self, source, event)
通过 eventFilter
传递的事件仅限于明确安装了事件过滤器的小部件。如果只有一个小部件安装了事件过滤器,则 source
参数只能是那个小部件。
如果多个小部件在同一个过滤对象上安装了一个事件过滤器,您可以使用身份检查来区分它们:
def eventFilter(self, source, event):
if (event.type() == QtCore.QEvent.MouseMove and
event.buttons() == QtCore.Qt.NoButton and
source is self.myInterestingWidget):
# do stuff with event...
print(event.pos())
return QtGui.QMainWindow.eventFilter(self, source, event)