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
- Informationsmeldung, die ein
QString
darstellt, die - Warnmeldung mit
[INFO]
String beginnt, die einQString
darstellt, die - Fehlermeldung mit
[WARNING]
String beginnt, die einQString
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.