我正在创建一个带语法高亮的qtextedit。我喜欢的方法是在textChanged()事件发生时用彩色文本替换qtextedit文本。问题是当我在textChanged()函数中替换文本时,会发生另一个textChanged():(,请帮忙!
这是我的代码:
def teditSQL_color_text(self):
text = self.teditSQL.toPlainText()
text = text.replace('select', '<font color=blue>select</font>')
self.teditSQL.setText(text)
答案 0 :(得分:0)
也许还有其他解决方案,但您可以使用blockSignals
方法阻止对象发出信号。所以请将它包裹在setText
这样的电话中。
def teditSQL_color_text(self):
text = self.teditSQL.toPlainText()
text = text.replace('select', '<font color=blue>select</font>')
wasBlocked = self.teditSQL.blockSignals(True)
self.teditSQL.setText(text)
self.teditSQL.blockSignals(wasBlocked)