c++ - 文本背景突出显示在当前行中不可见
问题描述
在我的 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);
}
它也可以正常工作。除了......它不能很好地与语法荧光笔结合使用。当前行设置的背景总是优先于语法高亮的高亮。这意味着关键字在当前行中没有突出显示。
我希望语法突出显示优先于当前行突出显示。这样它们的关键字也在当前行中突出显示。对此我能做些什么吗?
当然,我可以通过更改前景而不是背景来突出显示关键字,这将解决问题。问题是,在我的用例中,通过更改背景颜色突出显示看起来更好。
解决方案
推荐阅读
- angular - Angular 12 Chartjs - 图表仅出现在根页面上 - 路由问题?
- c# - 如何在 C# 中执行 mongo shell 查询正则表达式语法
- excel - 自动将图像列表插入 Excel 文档
- reactjs - 地图内的复选框未被选中
- java - JVMTI : 将捕获的对象转发到另一个 JVM
- java - 如何在 java 8 中将微秒转换为 LocalDateTime
- python - 在远程服务器中设置 docker 和 jupyter lab
- java - com.example.package 中的 ANR,输入调度超时
- node.js - 如何将 2 个逻辑块放在 nodeJs 中的同一异步路由中?
- python - 在文档测试中显示打印函数调用的结果