親クラスのマウスイベントを実行
2016/09/02
Python2.7.10, PyQt4.11.3
通常は子クラスにマウスイベントが設定されている場合は、親クラスのマウスイベントは実行しないようになってるみたい。 でも、子クラスのメソッド内で、下を呼び出せば親クラスのマウスイベントも発火する。
event.ignore()
下のサンプルでは、event.ignore()がない場合はQGraphicsViewのmousePressEventしか実行されないけど、event.ignore()がある場合は、QMainWindow()nomousePressEventも実行される。
from PyQt4 import QtGui, QtCore
class View(QtGui.QGraphicsView):
def mousePressEvent(self, event):
print "QGraphicsView mousePress"
event.ignore()
class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.s = QtGui.QGraphicsScene(self)
self.v = View(self.s)
self.setCentralWidget(self.v)
def mousePressEvent(self, event):
print "QMainWindow mousePress"
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.resize(300, 200)
window.show()
sys.exit(app.exec_())
Pyside QgraphicsScene can't capture mouse events
http://stackoverflow.com/questions/14701631/pyside-qgraphicsscene-cant-capture-mouse-events