Скрытие текста с помощью QSyntaxHighlighter

Проблема: Я хочу реализовать виджет редактирования текста для текста с дополнительными тегами. Я бы хотел, чтобы некоторые теги были в некоторых случаях невидимыми, чтобы они не отвлекали пользователя.

Среда: Я использую PyQt и предпочитаю использовать QPlainTextWidget и QSyntaxHighlighter .

Подход: С помощью QSyntaxHighlighter я могу установить QTextCharFormat для строк, которые соответствуют моим требованиям. QTextCharFormat предоставляет мне все свойства шрифта, такие как размер, цвета и т. Д. , но: Я не нашел возможности скрыть текст или уменьшить его размер до нуля.

Я не хочу удалять или заменять теги, так как это приведет к появлению намного большего количества кода (копирование должно содержать теги, и без него я не могу использовать QSyntaxHighlighter для формирования оставшегося текста в соответствии с теги).

Обновление: Пока что я нашел уродливый хак. Если установить для QTextFormat :: FontLetterSpacing небольшое значение, текст будет занимать все меньше и меньше места. В сочетании с прозрачным цветом текст становится чем-то вроде невидимого.

Проблема: В моем тесте это работало только при уменьшении межбуквенного интервала до 0,016%. Ниже интервал сбрасывается на 100%.

6
задан Trilarion 10 November 2016 в 12:25
поделиться