web-dev-qa-db-ja.com

qDebug()メッセージを有効および無効にする方法

次のように記述して、qDebug()メッセージを無効にします

CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG_OUTPUT

.proファイル内。これは正常に動作します。ソースコードを使用してqDebug()メッセージを有効にする方法があるかどうか知りたいのですが。アプリケーションへの引数として送信します。したがって、デフォルトではqDebug()メッセージを無効にしますが、qDebug()メッセージをオンにするように指定する引数を使用して、qDebug()を有効にする必要があります。これは可能ですか?

どんな助けでもありがたいです

16
gfernandes

qInstallMsgHandler を使用して、Qtデバッグメッセージを処理するための独自の関数を追加できます。

これにより、メッセージを印刷するかどうかを制御できます。

9
Dan Milburn

いくつかのオプションを使用して、実行時にQDebug(およびすべてのメッセージ)を制御できます。

  1. QLoggingCategory これにより、環境変数または構成ファイルを使用できます。たとえばQt 5.6では次のことができます:QT_LOGGING_RULES="*.debug=false;driver.usb.debug=true"は、USBデバッグ以外のすべてに対してqDebugをオンにします。より複雑な設定が必要な場合、またはQt 5.5以前を使用している場合は、qtlogging.iniファイルを使用して個々のデバッグメッセージをオンまたはオフにできます。
  2. QT_MESSAGE_PATTERN は、メッセージ出力の制御や formatting の実行にも使用できます。
10
asj

このコードを私のqmakeプロジェクトファイルに追加すると、qInstallMsgHandler()がなくても、Windows/MSYSでリリースビルドのqDebug()メッセージが有効になります。

CONFIG += console
CONFIG += warn_on
0
Michal Fapso