也许有人问过很多次,但我找不到解决办法。
我有一个对话:
class PostDialog(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.ui = Ui_Dialog() #code from designer!!
self.ui.setupUi(self)
self.ui.plainTextEdit = ContentEditor()
此对话框具有来自设计器的QPlainTextEdit。
我需要重写QPlainTextEdit的keyPress和keyrease。
所以我把它分成了子类:
class ContentEditor(QtGui.QPlainTextEdit):
def __init__(self, parent=None):
QtGui.QPlainTextEdit.__init__(self, parent)
def keyPressEvent(self, event):
print "do something"
但ContentEditor.keyPressEvent从未被调用!为什么?
我建议为此使用installEventFilter:
这看起来像:
可能需要调用QWidget的方法
setFocusPolicy
来接收按键事件。 来自方法keyPressEvent的QWidget的API文档:通过在Qt设计器中将QPlainTextEdit小部件提升到子类ContentEditor中,可以更好地完成您想要完成的工作。
Qt documentation
在“Promoted Widgets”对话框中:
“Promote类名”:ContentEditor
“头文件”:你的python模块名
相关问题 更多 >
编程相关推荐