雙擊view對象后,在manwin上響應該事件滚局;需要過濾出這個事件的發(fā)生卷胯,以及雙擊的地點赚楚。
1)生成 QtWidgets.QGraphicsView并使它居于mainWindow中間
2)在該view上面,安裝事件的過濾器self.graphicsView.viewport().installEventFilter(self)
3)在manWin上煌恢,超載eventFilte函數
def eventFilter(self, obj, event):
????if objis self.graphicsView.viewport():
????????if event.type() == QtCore.QEvent.MouseButtonDblClick:
????????????self.func(event)? 此處建立超載的操作函數
????return super(MainWindow,self).eventFilter(obj, event)
實驗代碼:
from PyQt5import QtCore, QtWidgets
class MainWindow( QtWidgets.QMainWindow ):
????????def __init__(self, parent=None):
????????????????super(MainWindow,self).__init__(parent)
????????????????self.graphicsView= QtWidgets.QGraphicsView()
????????????????self.setCentralWidget(self.graphicsView)
????????????????self.graphicsView.viewport().installEventFilter(self)
????????????????self.in_1 =10骇陈;self.in_2 =20
? ? ????def eventFilter(self, obj, event):
????????????????if? obj? is? self.graphicsView.viewport():
????????????????????????if event.type() == QtCore.QEvent.MouseButtonDblClick:
????????????????????????????????self.func(event)
????????????????return super(MainWindow,self).eventFilter(obj, event)
????????def func(self, event):
????????????????print(event.pos(),self.in_1,self.in_2)
if __name__ =='__main__':
????????import sys
????????app = QtWidgets.QApplication(sys.argv)
????????w = MainWindow()
????????w.show()
????????sys.exit(app.exec_())