와 나는 데 installEventFilter
필터링 mousePressEvent installEventFilter
MyTestxEdit
내가 QTextEdit
의 모든 이벤트 내가 installEventFilter
이 트릭을 사용했다 MyTestxEdit
에 의해 처리됩니다 원하는 QTextEdit
를 보유하고 위젯입니다 "mousePressEvent"
로 필터링 문제 keyPressEvent
과 같은 이벤트는 잘 처리되지만 mousePressEvent
을 처리하지 못합니다. 무엇이 잘못 되었나요? 대신 QTextEdit
자체의 QTextEdit's
뷰포트에 필터를 설치하는
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)
안녕하세요, 귀하의 질문에 많은 도움이되었습니다. 'eventFilter'에서'self.mousePressEvent (event)'가 무엇인지 물어볼 수 있습니까? 비슷한 예를 시도했는데 그 줄을 주석으로 달았을 때 차이점이 있는지 알 수 없습니다. – Aleksandar