PyQt QTextEdit:检测更改事件

Posted

技术标签:

【中文标题】PyQt QTextEdit:检测更改事件【英文标题】:PyQt QTextEdit: Detect change Event 【发布时间】:2013-07-26 19:01:28 【问题描述】:

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

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

但是,changeEvent,documented here,似乎不起作用。这是我的代码

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

没有错误,但未处理该事件。

任何想法如何在 PyQt 中使用 changeEvent(文本更改时)进行 QTextEdit?

【问题讨论】:

【参考方案1】:

changeEvent 与更改文本编辑的内容无关。它仅解决一般的 QWidget 状态更改。请参阅this page 以获取与此方法相关的事件列表。

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

【讨论】:

这是我尝试过的:self.textChanged.triggered.connect(self.changeText)。我得到以下信息:pyqtsignal must be bound to a Qobject, not mytexteditor 尝试删除.triggered。它绝对不应该在那里。 可能是self 不是正确的QObject。请参阅this answer 中的示例。 确实在连接之前我忘了做super(myTextEditor, self).__init__(parent) b。谢谢!! 有效的是 self.textEdit.textChanged.connect(self.doSomething)

以上是关于PyQt QTextEdit:检测更改事件的主要内容,如果未能解决你的问题,请参考以下文章

qt中如何向QTextEdit发送一个鼠标滚轮向下滚动一下的事件?

无法在 Pyqt5 中更改 qtextedit 的背景边框,有啥建议吗?

在 QTextEdit 中更改单个字符串颜色

具有不同文本颜色的 QTextEdit (Qt / C++)

PyQt4:QTextEdit 从第 n 行开始

PyQt5 - 滚动到 QTextEdit 的光标