Я работаю над приложением Qt
, чьи главного окном состоит из QPlainTextEdit
подклассов окна журнала для вывода событий. У меня есть три типа сообщений:QRegExp время компиляция предупреждения
- Информационное сообщение, которое представляет собой
QString
, который начинается с[INFO]
подстроки - предупреждающее сообщение, которое представляет собой
QString
, который начинается с[WARNING]
подстроки - Сообщение об ошибке, которое представляет собой
QString
начинающееся с[ERROR]
Подстрока
Теперь, чего я хочу достичь с помощью QSyntaxHighlighter
класса, чтобы изменить цвет этих сообщений в зависимости от их типа (INFO типа - Qt::DarkBlue
цвета, ВНИМАНИЯ типа - Qt::DarkYellow
цвета, ERROR типа - Qt::DarkRed
цвета) и здесь фрагмент коды, который должен был сделать задачу :
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
Однако, когда я скомпилировать проект, я получаю следующее предупреждения:
../../../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].\*");
^
и, следовательно, сообщения не окрашены (это мое подозрение). Что не так с моими регулярными выражениями? Я следил за this question and answer on SO.