取自 Qt Syntax Highlighter 示例:
//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
如您所见,结果是:引号内部将是灰色的,包括双 / 。但是“”之外的字符变成了darkGray,它应该是默认字体颜色(通常是黑色)。我如何调整单行注释的正则表达式,以便它知道绿色“//”不受暗灰色突出显示规则的约束?
我试图为单行注释规则添加这个:
rule.pattern.setMinimal(true);
还是不行。我也试过:
rule.pattern = QRegExp("//[^\n]*\"*");