gpt4 book ai didi

c++ - 如何在文本突出显示期间保留语法突出显示

转载 作者:太空狗 更新时间:2023-10-29 22:56:11 26 4
gpt4 key购买 nike

在大多数代码编辑器中,文本突出显示不会删除语法颜色。

例如:

  • Visual Studio

example Visual Studio

  • Sublime 文本

example Sublime Text

我想在我用QT制作的代码编辑器中模拟这个功能;然而,文本突出显示将所有文本变成单一颜色:

dsd对比 dsad

是否可以在文本高亮期间保留语法高亮?


仅供引用:我正在使用 QPlainTextEditQSyntaxHighlighter 来创建编辑器。我试过更改 QPlainTextEdit 的调色板,但我似乎找不到禁用 HighlightedText 效果的方法。


编辑:这是我用来添加一些上下文的代码的简化版本:

void MyHighlighter::highlightBlock(const QString& text) {
// Sets characters 0 ~ 10 to be colored rgb(100, 200, 100)
QTextCharFormat temp;
temp.setForeground(QColor(100, 200, 100));
setFormat(0, 10, temp);
}

最佳答案

好消息!重新审视这个问题后,我在玩了一会儿后找到了解决方案。感觉有点愚蠢,因为它工作得很好,所以不尽快尝试。

QPlainTextEdit(或适用于场景的任何小部件)上,您只需将QPalette::HighlightedText设置为QBrush(Qt::NoBrush )


例如,要从 Sublime Text 复制透明突出显示,您只需执行以下操作:

auto palette = textEditWidget->palette();

// provide highlight color with low alpha
palette.setBrush(QPalette::Highlight, QColor(255, 255, 255, 30));

// set highlight text brush to "No Brush"
palette.setBrush(QPalette::HighlightedText, QBrush(Qt::NoBrush));

// apply to widget
textEditWidget->setPalette(palette);

结果:

i did the thing. hurrah! ~

关于c++ - 如何在文本突出显示期间保留语法突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48757582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com