Qt语法高亮显示单行注释的高亮显示规则示例



取自Qt语法高亮显示示例:

//single line comment rule
singleLineCommentFormat.setForeground(Qt::darkGray);
rule.pattern = QRegExp("//[^n]*");
rule.format = singleLineCommentFormat;
highlightingRules.append(rule);
//string rule
quotationFormat.setForeground(Qt::darkGreen);
rule.pattern = QRegExp("".*"");
rule.pattern.setMinimal(true);
rule.format = quotationFormat;
highlightingRules.append(rule);

问题是当你有这样的东西:

"inside is darkGreen//"outside is darkGray

正如你所看到的,结果是:报价单内部将是灰色的,包括双/。但是"之外的字符变成了深灰色,这应该是默认的字体颜色(通常是黑色)。如何调整单行注释的RegExp,使其知道绿色"//"不受darkGray突出显示规则的约束?

我试着为单行注释规则添加这个:

rule.pattern.setMinimal(true);

还是不行。我也试过:

rule.pattern = QRegExp("//[^n]*"*");
/("(?:(?!//).)+?")/

利用非捕捉组和负面表情的魔力,我设计了以下内容:

quotationFormat.setForeground(Qt::darkGreen);
rule.pattern = QRegExp(""(?:(?!\/\/).)+"");//QRegExp("".*"");
rule.pattern.setMinimal(true);
rule.format = quotationFormat;
highlightingRules.append(rule);

施加魔法,你就会得到你想要的行为。

参考文献:

https://stackoverflow.com/a/977294/999943

http://regexr.com/3an21

并在本例中进行了测试:

http://doc.qt.io/qt-5/qtwidgets-richtext-syntaxhighlighter-example.html

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新