J'ai filtrent le problème le "mousePressEvent"
avec installEventFilter
Filtrage mousePressEvent avec installEventFilter
MyTestxEdit
est un widget qui détient QTextEdit
Je veux que tous les événements de QTextEdit
seront gérer par MyTestxEdit
J'ai utilisé le installEventFilter
Cette astuce fonctionne bien pour des événements comme keyPressEvent
mais ne gère pas le mousePressEvent
qu'est-ce que je fais mal?
import sys
from PyQt4.QtGui import QApplication, QErrorMessage
from KdeQt.KQApplication import KQApplication
from KdeQt.KQMainWindow import KQMainWindow
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import thread
class MyTestxEdit1(QTextEdit):
def __init__(self,parent):
QTextEdit.__init__(self)
self.setMouseTracking(True)
class MyTestxEdit(QWidget):
def __init__(self):
QWidget.__init__(self)
self.__qTextEdit=MyTestxEdit1(self)
self.__qHBoxLayout=QHBoxLayout()
self.setLayout(self.__qHBoxLayout)
self.__qHBoxLayout.addWidget(self.__qTextEdit)
self.__qTextEdit.installEventFilter(self)
def eventFilter(self,target,event):
print "eventFilter "+str(event.type())
if(event.type()==QEvent.MouseButtonPress):
print "Mouse was presssed "+str(event.type())
self.mousePressEvent(event)
return True
return False
if __name__ == '__main__':
app = KQApplication(sys.argv,[])
mainWindow = KQMainWindow()#loc, splash, pluginFile, noopen, restartArgs)
s = QSize(800, 600)
mainWindow.resize(s)
testxEdit=MyTestxEdit()
mainWindow.setCentralWidget(testxEdit)
mainWindow.show()
res = app.exec_()
sys.exit(res)
Bonjour, votre question m'a beaucoup aidé. Puis-je vous demander pour quoi 'self.mousePressEvent (event)' dans votre 'eventFilter'? J'ai essayé un exemple similaire et je ne peux pas dire s'il y a une différence quand je commente cette ligne. – Aleksandar