Проблема: Я хочу реализовать виджет редактирования текста для текста с дополнительными тегами. Я бы хотел, чтобы некоторые теги были в некоторых случаях невидимыми, чтобы они не отвлекали пользователя.
Среда: Я использую PyQt
и предпочитаю использовать QPlainTextWidget
и QSyntaxHighlighter
.
Подход: С помощью QSyntaxHighlighter
я могу установить QTextCharFormat
для строк, которые соответствуют моим требованиям. QTextCharFormat
предоставляет мне все свойства шрифта, такие как размер, цвета и т. Д. , но: Я не нашел возможности скрыть текст или уменьшить его размер до нуля.
Я не хочу удалять или заменять теги, так как это приведет к появлению намного большего количества кода (копирование должно содержать теги, и без него я не могу использовать QSyntaxHighlighter
для формирования оставшегося текста в соответствии с теги).
Обновление: Пока что я нашел уродливый хак. Если установить для QTextFormat :: FontLetterSpacing небольшое значение, текст будет занимать все меньше и меньше места. В сочетании с прозрачным цветом текст становится чем-то вроде невидимого.
Проблема: В моем тесте это работало только при уменьшении межбуквенного интервала до 0,016%. Ниже интервал сбрасывается на 100%.