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