Qt — QPlainTextEdit::Экстраселекции переопределяют QSyntaxHighlighter

#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);
}
 

Есть ли способ выделить выбранную строку и одновременно выделить определенные ключевые слова?