Я создаю собственный редактор кода с QPlainTextEdit
и QSyntaxHighlighter
, и я столкнулся с сбоем. Я хотел бы сохранить подсветку синтаксиса даже в пределах выделения. Однако цвета выделения (цвета среды) переопределяют цвета текста, выделенные тегами QSyntaxHighlighter
и html. Сохраняются другие атрибуты, такие как семейство шрифтов.
Пример:
Нет выбора: Выбор:
(я хотел бы, чтобы Hello
был зеленым, а World!
- черным)
Я также попытался установить таблицу стилей:
QPlainTextEdit {
selection-color: rgba(0, 0, 0, 0);
selection-background-color: lightblue;
}
Результат:
Цвет фона накладывает текст и хорошо, цвет текста с alpha = 0
не отображается. Я сделал это, чтобы исключить мысль о том, что синтаксический цвет сохраняется в selection-color
. Фактически он накладывается selection-background-color
.
Изменить: Нет, если я также установил selection-background-color
в rgba(0, 0, 0, 0)
, там нет выбора и нет текста в этом выборе. Все, что я вижу, это фон.
Подход к следующему фрагменту, который выделяет целую курсорную линию, кажется таким, каким он есть, но я бы в конечном итоге пересмотрел все механизмы выбора...
QList<QTextEdit::ExtraSelection> extraSelections;
QTextCursor cursor = textCursor();
QTextEdit::ExtraSelection selection;
selection.format.setBackground(lineHighlightColor_);
selection.format.setProperty(QTextFormat::FullWidthSelection, true);
selection.cursor = cursor;
selection.cursor.clearSelection();
extraSelections.append(selection);
setExtraSelections(extraSelections);
Есть ли более простое решение для этого?