如何找到触发了哪个小部件?该位置相对于其下方的任何小部件的原点。我想将事件限制在一个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)
答案 0 :(得分:1)
通过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)