Qt では、デバッグ情報は、qDebug() および他の同様のステートメントを使用してコンソールに出力されることがよくあります。特にクロスプラットフォーム開発の場合は、代わりにこの出力をファイルにリダイレクトすると便利です。これにより、シェル スクリプトの使用が回避され、より一貫性のあるソリューションが提供されます。
デバッグ出力をリダイレクトするために、Qt は qInstallMessageHandler() 関数を提供します。これにより、メッセージを印刷する前に処理するカスタム メッセージ ハンドラーをインストールできます。以下にハンドラーの例を示します。
<code class="cpp">void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QByteArray localMsg = msg.toLocal8Bit(); switch (type) { case QtDebugMsg: fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); break; case QtInfoMsg: // ... case QtWarningMsg: // ... case QtCriticalMsg: // ... case QtFatalMsg: fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); abort(); } }</code>
このハンドラーはメッセージを stderr に出力しますが、stderr をファイル ストリームに置き換えて出力をリダイレクトできます。
Toカスタム ハンドラーをインストールし、main() 関数で qInstallMessageHandler() を呼び出します。
<code class="cpp">qInstallMessageHandler(myMessageOutput);</code>
インストールされると、すべての qDebug および同様のメッセージがハンドラーにリダイレクトされ、指定したファイルまたはストリームに書き込まれます。
以上がQt で QDebug、QWarning、および QCritical の出力をリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。