2016-03-21 5 views
1

Ich arbeite an einigen Qt App, deren Hauptfenster besteht aus QPlainTextEdit subclassed Logfensters für Ereignisse ausgibt. Ich habe drei Arten von Nachrichten:QRegExp Kompilierung Warnungen

  1. Informationsmeldung, die ein QString darstellt, die
  2. Warnmeldung mit [INFO] String beginnt, die ein QString darstellt, die
  3. Fehlermeldung mit [WARNING] String beginnt, die ein QString darstellt das beginnt mit [ERROR] substring

Nun, was ich miterreichen möchte Klasse 10 ist die Farbe dieser Nachrichten nach ihrer Art zu ändern (INFO Typ - Qt::DarkBlue Farbe, WARNUNG Typ - Qt::DarkYellow Farbe, ERROR Typ - Qt::DarkRed Farbe) und hier ist Code Chunk, die die Aufgabe hätte tun müssen :

void UeLogWindowTextHighlighter::ueSetupRules() 
{ 
    UeHighlightRule* ueRuleInfo=new UeHighlightRule(this); 
    UeHighlightRule* ueRuleWarning=new UeHighlightRule(this); 
    UeHighlightRule* ueRuleError=new UeHighlightRule(this); 

    this->ueInfoStartExpression()->setPattern("^[INFO].\*");  // FIRST WARNING 
    this->ueWarningStartExpression()->setPattern("^[WARNING].\*"); // SECOND WARNING 
    this->ueErrorStartExpression()->setPattern("^[ERROR].\*");  // THIRD WARNING 

    this->ueInfoExpressionCharFormat()->setForeground(Qt::darkGray); 
    this->ueWarningExpressionCharFormat()->setForeground(Qt::darkYellow); 
    this->ueErrorExpressionCharFormat()->setForeground(Qt::darkRed); 

    ueRuleInfo->ueSetPattern(this->ueInfoStartExpression()); 
    ueRuleInfo->ueSetTextCharFormat(this->ueInfoExpressionCharFormat()); 

    this->ueHighlightRules()->append(ueRuleInfo); 

    ueRuleWarning->ueSetPattern(this->ueWarningStartExpression()); 
    ueRuleWarning->ueSetTextCharFormat(this->ueWarningExpressionCharFormat()); 

    this->ueHighlightRules()->append(ueRuleWarning); 

    ueRuleError->ueSetPattern(this->ueErrorStartExpression()); 
    ueRuleError->ueSetTextCharFormat(this->ueErrorExpressionCharFormat()); 

    this->ueHighlightRules()->append(ueRuleError); 
} // ueSetupRules 

Allerdings, wenn ich das Projekt kompilieren, erhalte ich folgende Warnungen:

../../../gui/uelogwindowtexthighlighter.cpp: In member function 'void UeLogWindowTextHighlighter::ueSetupRules()': ../../../gui/uelogwindowtexthighlighter.cpp:58:47: warning: unknown escape sequence: '\*' [enabled by default] 
    this->ueInfoStartExpression()->setPattern("^[INFO].\*"); 
              ^../../../gui/uelogwindowtexthighlighter.cpp:59:50: warning: unknown escape sequence: '\*' [enabled by default] 
    this->ueWarningStartExpression()->setPattern("^[WARNING].\*"); 
               ^../../../gui/uelogwindowtexthighlighter.cpp:60:48: warning: unknown escape sequence: '\*' [enabled by default] 
    this->ueErrorStartExpression()->setPattern("^[ERROR].\*"); 
               ^

und folglich sind die Nachrichten nicht gefärbt (das ist mein Verdacht). Was stimmt nicht mit meinen regulären Ausdrücken? Ich folgte this question and answer on SO.

Antwort

3

Stern (*) musste nicht maskiert werden. Entfernen Sie die \ oder wenn Sie die \ benötigen, sollte es maskiert sein und schreiben Doppel\ (\\).