- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用QPlainTextEdit
和QSyntaxHighlighter
创建自定义代码编辑器,但遇到了故障。我想保留语法高亮显示,即使在选择中也是如此。但是,所选内容的颜色(环境颜色)会覆盖QSyntaxHighlighter
和html标签突出显示的文本的颜色。 保留其他属性,例如字体系列。
示例:
无选择:选择:
(我希望 Hello
为绿色,而World!
为黑色)
我还尝试将样式表设置为:
QPlainTextEdit {
selection-color: rgba(0, 0, 0, 0);
selection-background-color: lightblue;
}
alpha = 0
的文本颜色不可见。我这样做是为了排除语法颜色在
selection-color
下仍然存在的想法。实际上,它已被
selection-background-color
覆盖。
selection-background-color
设置为
rgba(0, 0, 0, 0)
,则没有选择,并且该选择中也没有文本。我所看到的只是背景。
QList<QTextEdit::ExtraSelection> extraSelections;
QTextCursor cursor = textCursor();
QTextEdit::ExtraSelection selection;
selection.format.setBackground(lineHighlightColor_);
selection.format.setProperty(QTextFormat::FullWidthSelection, true);
selection.cursor = cursor;
selection.cursor.clearSelection();
extraSelections.append(selection);
setExtraSelections(extraSelections);
最佳答案
问题出在这里:
https://github.com/qt/qtbase/blob/e03b64c5b1eeebfbbb94d67eb9a9c1d35eaba0bb/src/widgets/widgets/qplaintextedit.cpp#L1939-L1945
QPlainTextEdit使用上下文调色板代替当前选择格式。
您可以从QPlainTextEdit创建一个类继承,并覆盖paintEvent
签名:
void paintEvent(QPaintEvent *);
#include <QPainter>
#include <QTextBlock>
#include <QScrollBar>
o.format = range.format;
o.format = range.cursor.blockCharFormat();
o.format.setBackground(QColor(your selection color with alpha));
关于qt - QSyntaxHighlighter-文本选择覆盖样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28257022/
我正在使用QPlainTextEdit和QSyntaxHighlighter创建自定义代码编辑器,但遇到了故障。我想保留语法高亮显示,即使在选择中也是如此。但是,所选内容的颜色(环境颜色)会覆盖QSy
我正在使用 Qt 的 QSyntaxHighlighter 为 QML TextEdit 中的一些类似 C 的语法着色 除了多行注释,一切都很好。 我是这样检测它们的: void highlightB
我正在为软件中的文档编写一个搜索栏。问题是:仅在我手动调整窗口大小(例如通过拖动一个角)后才会出现突出显示。 该文档是在 QTextDocument 中的 html 格式,我使用 QSyntaxHig
如何让 QSyntaxHighlighter 语法高亮 ascii 字符,如 @ 或 #?这是我当前的代码: Highlighter::Highlighter(QTextDocument *paren
据我所知,我必须从 QSyntaxHighlighter 继承并重写 highlightBlock() 来为我的 QTextEdit 创建荧光笔。 但是,我只能在highlightBlock()中得到
问题:我想为带有附加标签的文本实现一个文本编辑小部件。 我希望某些标签在某些情况下不可见,以免分散用户的注意力。 环境:我正在使用 PyQt并且更喜欢使用 QPlainTextWidget和 QSyn
我正在使用 Qt 开发语法荧光笔,我想在其上添加单元测试以检查格式是否得到了很好的应用。但我没能按格式划分块。我使用 QTextBlock 和 QTextFragment 但它在 QTextFragm
如标题所示,突出显示似乎不适用于创建 QTextEdit 的表单。我的 QSyntaxHighlighter 派生类是来自 Qt docs 的那个和我的代码(不起作用的代码): ui->setupUi
我已经编写了一个小的 Python PyQt4 程序来语法高亮 QPlainTextEdit 字段中的 MySQL 源代码。以下代码用于正确地对 MySQL 文本进行颜色编码。 如果有人编辑明文字段,
QtGui.QSyntaxHighlighter 的 highlightBlock(self, qtext) 将我的 QTextEdit 小部件中的每一行视为不同的 block ( qtext).这会
我写了两个语法高亮:一个用于 CSS,一个用于 HTML。 他们工作得很好。 但是,我想在 HTML 代码中(在
QRegExp 模式用于捕获 QSyntaxHighlighter 的单引号文本是什么?匹配项应包含引号,因为我正在构建一个 sql 代码编辑器。 测试模式 string1 = 'test' and
QRegExp 模式用于捕获 QSyntaxHighlighter 的单引号文本是什么?匹配项应包含引号,因为我正在构建一个 sql 代码编辑器。 测试模式 string1 = 'test' and
也许我只是愚蠢,但我已经阅读了此处的 qt richtext 演示文档 (https://doc.qt.io/archives/qt-4.7/richtext-syntaxhighlighter.ht
为 QSyntaxHighlighter 捕获引用文本的 QRegExp 模式是什么? 测试图案 "one" or "two" or "three" 到目前为止我已经尝试过: QRegExp rx("
我需要匹配如下字符串: XXX 但都是“1”。并且“XXX”被突出显示,我目前正在使用以下正则表达式: QRegExp("^\s+(\d+\.)?\s+\b[A-Z]{2,}\b") 在这种情况下,我
我正在使用 QSyntaxHighlighter 来突出显示 QTextEdit 中的一段文本。文本看起来像我期望的那样,在显示屏上的 QTextEdit 中带有适当的突出显示。如果我随后调用 QTe
我的 QML 文件中有一个 TextEdit,我有一个 QSyntaxHighlighter C++ 类。我想在 C++ 类中指定高亮逻辑并将其应用于 TextEdit,但我不确定如何在 QML 对象
我是一名优秀的程序员,十分优秀!