PyQt QTextEdit:检测更改事件

5

我正在PyQT QTextEdit中覆盖一些事件,例如:

class myTextEditor(QTextEdit):
    def keyPressEvent(self,e):
                print 'key pressed'
        return super(myTextEditor, self).keyPressEvent(e)

然而,这里记录的changeEvent似乎不起作用。以下是我的代码:

def changeEvent(self,e):
    print 'change'
    return super(myTextEditor, self).changeEvent(e)

没有错误,但事件没有被处理。

在PyQt中,如何使用changeEvent(文本更改时)来处理QTextEdit?

1个回答

13

changeEvent 不涉及更改文本编辑器的内容,它仅处理一般 QWidget 状态更改。请查看此页面以获取与此方法相关的事件列表。

您应该连接到 QTextEdit::textChanged() 信号以跟踪文本更改。


这是我尝试的代码:self.textChanged.triggered.connect(self.changeText)。但是我得到了以下错误提示:pyqtsignal必须绑定到Qobject,而不是mytexteditor - edi9999
尝试移除“.triggered”。它绝对不应该在那里。 - Pavel Strakhov
也许 self 不是一个合适的 QObject。在这个答案中有一个例子。 - Pavel Strakhov
确实,我在连接之前忘记了执行 super(myTextEditor, self).__init__(parent)。谢谢!! - edi9999
有效的方法是self.textEdit.textChanged.connect(self.doSomething)。 - Mohamad Fakih
链接已失效 - Stelios333

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接