首页 > 解决方案 > 文本背景突出显示在当前行中不可见

问题描述

在我的 Qt 应用程序中,我使用QPlainTextEdit带有文本/语法高亮器的小部件(类似于这个https://doc.qt.io/archives/4.6/richtext-syntaxhighlighter.html),它通过更改关键字的背景来突出显示某些关键字出现在文中。它工作完美。

但我也使用此处描述的当前行的突出显示https://doc.qt.io/archives/4.6/widgets-codeeditor.html特别是这个方法:

void CodeEditor::highlightCurrentLine()
{
     QList<QTextEdit::ExtraSelection> extraSelections;

     if (!isReadOnly()) {
         QTextEdit::ExtraSelection selection;

         QColor lineColor = QColor(Qt::yellow).lighter(160);

         selection.format.setBackground(lineColor);
         selection.format.setProperty(QTextFormat::FullWidthSelection, true);
         selection.cursor = textCursor();
         selection.cursor.clearSelection();
         extraSelections.append(selection);
     }

     setExtraSelections(extraSelections);
}

它也可以正常工作。除了......它不能很好地与语法荧光笔结合使用。当前行设置的背景总是优先于语法高亮的高亮。这意味着关键字在当前行中没有突出显示。

我希望语法突出显示优先于当前行突出显示。这样它们的关键字也在当前行中突出显示。对此我能做些什么吗?

当然,我可以通过更改前景而不是背景来突出显示关键字,这将解决问题。问题是,在我的用例中,通过更改背景颜色突出显示看起来更好。

标签: c++qt

解决方案


推荐阅读