我将 QTextEdit 子类化
class Q_My_TextEdit(QtGui.QTextEdit):
def __init__(self, *args):
QtGui.QTextEdit.__init__(self, *args)
def undo(self):
print("undo")
#my own undo code
在我的另一堂课上:
self.textedit=Q_My_TextEdit()
def keyPressEvent(self,event):
if event.key()==(Qt.Key_Control and Qt.Key_Z):
self.textedit.undo()
如果您在 QTextEdit 中键入一些文本,然后按 CTRL-Z,它会被撤消,但不会调用函数“撤消”。那么它具体是如何工作的呢?
背景是,在第二步中,我想设置新文本(setText()),因此删除了撤消堆栈。我已经运行了可以自行撤消的代码,但我无法在 CTRL-Z 上触发它,因为使用“Z”键快捷键以某种方式被保留。例如,如果我用 调用我自己的撤消event.key()==(Qt.Key_Control and Qt.Key_Y)
,它可以工作。