J'utilise mergeCharFormat sur plusieurs mots de mon QTextEdit, dans le but de les mettre en évidence. Quelque chose comme ceci:(PyQt) Comment puis-je réinitialiser le CharFormat d'un QTextEdit entier?
import sys
from PyQt4 import QtGui, uic
from PyQt4.QtCore import *
def drawGUI():
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
w.setGeometry(200, 200, 200, 50)
editBox = QtGui.QTextEdit(w)
text = 'Hello stack overflow, this is a test and tish is a misspelled word'
editBox.setText(text)
""" Now there'd be a function that finds misspelled words """
# Highlight misspelled words
misspelledWord = 'tish'
cursor = editBox.textCursor()
format_ = QtGui.QTextCharFormat()
format_.setBackground(QtGui.QBrush(QtGui.QColor("pink")))
pattern = "\\b" + misspelledWord + "\\b"
regex = QRegExp(pattern)
index = regex.indexIn(editBox.toPlainText(), 0)
cursor.setPosition(index)
cursor.movePosition(QtGui.QTextCursor.EndOfWord, 1)
cursor.mergeCharFormat(format_)
w.showFullScreen()
sys.exit(app.exec_())
if __name__ == '__main__':
drawGUI()
Ainsi, cette caractéristique de mise en évidence fonctionne exactement comme prévu. Cependant, je ne peux pas trouver un bon moyen d'effacer les points saillants de la zone de texte. Qu'est-ce qu'une bonne méthode pour faire une telle chose, en définissant simplement le format char de l'ensemble de QTextEdit à ses valeurs par défaut? Ce que j'ai essayé jusqu'à présent, c'est d'obtenir le curseur à nouveau, et de définir son format à un nouveau format avec un arrière-plan clair, puis de placer le curseur sur toute la sélection et en utilisant QTextCursor.setCharFormat(), mais cela semble ne fais rien.
Impressionnant! Je ne savais pas qu'il y avait juste un .select() pour le curseur, quelque part manqué dans les docs. – Ajv2324