Gri*_*ort 5 c++ qt qplaintextedit
在大多数代码编辑器中,文本突出显示不会删除语法颜色。
例如:


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

是否可以在文本突出显示期间保留语法突出显示?
仅供参考:我正在使用QPlainTextEdit和QSyntaxHighlighter来创建编辑器。我试过更改 的调色板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);
}
Run Code Online (Sandbox Code Playgroud)
好消息!在重新审视这个问题后,我在玩了一会儿后找到了解决方案。不早点尝试这个感觉有点愚蠢,因为它完美地工作。
在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);
Run Code Online (Sandbox Code Playgroud)
结果:
| 归档时间: |
|
| 查看次数: |
435 次 |
| 最近记录: |