#c #qt5
Вопрос:
У меня есть QPlainTextEdit, в котором строка, содержащая курсор, подсвечивается путем установки цвета фона с помощью setExtraSelections (точно так, как показано здесь).
У меня также есть QSyntaxHighlighter, форматирующий тот же редактор. Одна из вещей, для которой я использую QSyntaxHighlighter, — это выделение определенных слов (опять же, установив цвет фона). Проблема, с которой я сталкиваюсь, заключается в том, что цвет фона, заданный с помощью setExtraSelections, кажется, имеет более высокий приоритет, чем тот, который задан QSyntaxHighlighter, поэтому я теряю подсветку ключевого слова, которую я хочу, когда курсор находится на той же строке, что и слово.
Я попытался просто использовать сам QSyntaxHighlighter для выделения строки, но он будет форматироваться только до разрыва строки, а не всей строки в окне просмотра:
if (currentBlock() == m_selBlock)
{
QTextCharFormat curFormat;
int i;
// highlight on a character-by-character basis in case we cross a formatting boundary
for (i=0; i<text.size(); i )
{
curFormat = format(i);
curFormat.setBackground(QColor(248,248,248));
curFormat.setProperty(QTextFormat::FullWidthSelection, true);
setFormat(i, 1, curFormat);
}
// Try to highlight the rest of the line past the linebreak
setFormat(i, 1000, curFormat);
}
Есть ли способ выделить выбранную строку и одновременно выделить определенные ключевые слова?