1

メインウィンドウがイベントを出力するためのサブクラス化されたログウィンドウで構成されるQtアプリに取り組んでいます。次の 3 種類のメッセージがあります。QPlainTextEdit

  1. 部分文字列QStringで始まるを表す情報メッセージ[INFO]
  2. 部分文字列QStringで始まるを表す警告メッセージ[WARNING]
  3. 部分文字列QStringで始まるを表すエラー メッセージ[ERROR]

さて、私がクラスで達成したいのは、これらのメッセージのタイプ ( INFOタイプ -色、WARNINGタイプ -色、ERRORタイプ -色)QSyntaxHighlighterに応じてこれらのメッセージの色を変更することです。Qt::DarkBlueQt::DarkYellowQt::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].\*");
                                                ^

その結果、メッセージは色付けされていません (それは私の疑いです)。正規表現の何が問題になっていますか? SO でこの質問と回答をフォローしていました。

4

1 に答える 1