2010-05-21 3 views
2

QSyntaxHighlighter에 @ 또는 #와 같은 ASCII 문자를 강조 표시하려면 어떻게해야합니까? 이것은 현재 코드입니다 :QSyntaxHighlighter highlight ascii?

Highlighter::Highlighter(QTextDocument *parent) 
    : QSyntaxHighlighter(parent) 
{ 
HighlightingRule rule; 
keywordFormat.setForeground(Qt::darkBlue); 
keywordFormat.setFontWeight(QFont::Bold); 
QStringList keywordPatterns; 
keywordPatterns << "\\bchar\\b" << "\\bclass\\b" << "\\bconst\\b" 
     << "\\bdouble\\b" << "\\benum\\b" << "\\bexplicit\\b" 
     << "\\bfriend\\b" << "\\binline\\b" << "\\bint\\b" 
     << "\\blong\\b" << "\\bnamespace\\b" << "\\boperator\\b" 
     << "\\bprivate\\b" << "\\bprotected\\b" << "\\bpublic\\b" 
     << "\\bshort\\b" << "\\bsignals\\b" << "\\bsigned\\b" 
     << "\\bslots\\b" << "\\bstatic\\b" << "\\bstruct\\b" 
     << "\\btemplate\\b" << "\\btypedef\\b" << "\\btypename\\b" 
     << "\\bunion\\b" << "\\bunsigned\\b" << "\\bvirtual\\b" 
     << "\\bvoid\\b" << "\\bvolatile\\b" << "\\[email protected]\\b"; 
foreach (QString pattern, keywordPatterns) { 
    rule.pattern = QRegExp(pattern); 
    rule.format = keywordFormat; 
    highlightingRules.append(rule); 
} 

classFormat.setFontWeight(QFont::Bold); 
classFormat.setForeground(Qt::darkMagenta); 
rule.pattern = QRegExp("\\bQ[@-A-Za-z]+\\b"); 
rule.format = classFormat; 
highlightingRules.append(rule); 

singleLineCommentFormat.setForeground(Qt::red); 
rule.pattern = QRegExp("//[^\n]*"); 
rule.format = singleLineCommentFormat; 
highlightingRules.append(rule); 

multiLineCommentFormat.setForeground(Qt::red); 

quotationFormat.setForeground(Qt::darkGreen); 
rule.pattern = QRegExp("\".*\""); 
rule.format = quotationFormat; 
highlightingRules.append(rule); 

functionFormat.setFontItalic(true); 
functionFormat.setForeground(Qt::blue); 
rule.pattern = QRegExp("\\b[A-Za-z0-9_]+(?=\\()"); 
rule.format = functionFormat; 
highlightingRules.append(rule); 

commentStartExpression = QRegExp("/\\*"); 
commentEndExpression = QRegExp("\\*/"); 
} 

@implementation 또는 #include 또는 #ifndef를 강조 표시하려면 어떻게해야합니까? 나는 Regex를 바꾸려고 생각하고 있었다.

답변