Я реализовал очень простую подсветку синтаксиса и использую ее с QTextEdit.
class MyHighlighter(QtGui.QSyntaxHighlighter):
def __init__(self, parent):
QtGui.QSyntaxHighlighter.__init__(self, parent)
self.Rules = []
classFormat = QtGui.QTextCharFormat()
classFormat.setFontWeight(QtGui.QFont.Bold)
classFormat.setForeground(QtCore.Qt.darkMagenta)
classFormat.setToolTip("this is very important!")
self.Rules.append(
('keyword', classFormat)
)
def highlightBlock(self, text):
for pattern, classFormat in self.Rules:
expression = re.compile(pattern)
for match in re.finditer(expression, text):
index = match.start()
length = match.end() - index
self.setFormat(index, length, classFormat)
Подсветка синтаксиса правильно настроила форматирование текста, но подсказка недоступна. Это просто никогда не видно.
Я нашел несколько старых сообщений об ошибках, которые описывают подобное поведение, но, похоже, что для упомянутой проблемы нет решения:
https://bugreports.qt.io/browse/QTBUG-21553
Как мне обойти это, чтобы всплывающая подсказка работала?
Я думал, что могу использовать html-теги внутри QTextEdit. Но мне не нравится эта идея, так как она усложнит предварительную обработку текста (я работаю с большими файлами). Также провел некоторые эксперименты с этим и, похоже, это тоже может быть сложно.