3

アプリケーションが Qt Creator から (「F5」または「Ctrl + R」のいずれかで) 開始されているかどうかをコード内から判断するにはどうすればよいですか?

これを知りたい理由は、アプリケーションが実行可能ファイルから直接起動された場合にのみ、独自のデバッグ メッセージ ハンドラー (qInstallMessageHandler() を使用) を作成したいからです。Qt では 1 つのメッセージ ハンドラーしか許可されないため、Qt Creator から起動するときに独自のメッセージ ハンドラーを作成したくありません。そうしないと、Qt Creator 独自のデバッグ コンソールにデバッグ メッセージが表示されません。

4

6 に答える 6

3

それを検出する簡単な方法はないと思います。ただし、QtCreator の実行設定にコマンド ライン引数を追加し、実行時にそれを確認することはできます。

于 2013-06-27T20:07:34.387 に答える
3

私には2つの可能な解決策があります:

  1. 親プロセス(または親の親)の名前を確認してください

    これを行うには複数の方法があります。Posix (mingw、linux など) では getppid() があります。Windows では、Psapiまたはその他のプロセス処理関数の名前を確認できます。過去に他の目的でこれを行ったことがありますが、プロセス名が変更されない限り、確実に機能します。または、ウィンドウ名を確認することもできます。残念ながら、これらのソリューションはどれも「Qt-Native」ではありません。

  2. Qt Creator から起動した場合にのみ、コマンドライン引数を指定します

    ライブラリを使用してコマンドライン引数をスキャンする場合、これがおそらく最も簡単な解決策です。私は通常、Boost Program Options (そこにある Google) を使用します。ログ出力をコンソールに出力することを指定する「--console-log」のようなコマンドライン引数を作成できます。Qt Creator 内からそのオプションを設定するには、ここに文書化されています。これはおそらく最も「Qt-Native」なソリューションです。Qt 関数を使用してコマンドラインを解析すると、100% Qt になります。

于 2013-11-13T14:12:57.913 に答える
0

これが手動の解決策です。

.pro ファイルでマクロを定義します....

# To turn on remove the comment marker '#'
#    isEmpty(LAUNCH_FROM_IDE):LAUNCH_FROM_IDE = 1
    !isEmpty(LAUNCH_FROM_IDE) {
            DEFINES += APP_LAUNCH_FROM_IDE
    }

必要に応じてヘッダー/ソースで使用します...

#ifdef APP_LAUNCH_FROM_IDE
...
#endif

それで全部です

于 2016-12-26T18:46:38.750 に答える