3

アプリケーションの に次の行を含める必要があることに気付きmain.cppました。Qt

QApplication app(argc, argv);

argcそれがコマンドライン引数の数であり、コマンドライン引数のargv配列リストであることはわかっています。しかし、私の頭の中の質問は次のとおりです。私がコンストラクターに渡していると同時に明示的に見ることができない引数は何ですか? 舞台裏で何が働いているのですか?

ありがとう。

4

4 に答える 4

2

Qt アプリケーションは、いくつかのコマンド ライン引数をサポートしています。たとえばapp.exe -style motif、Windowsでは面白いです。基本的に、このコンストラクターでは、引数を解析するために QApplication クラスに引数を渡します。

そしてもちろん、次のように QApplication に何も渡さなくてもかまいません。

int c=1; char** v = &argv[0]; QApplication app(c,v);そのため、Qt は何も解析せず、コマンド ライン引数を受け入れません。

argc と argv スコープについては、QApplication に渡すと、必要なすべてのポイントからアクセスできます。それらを QApplication に渡さない場合は、それらをグローバルにするように注意する必要があります。

于 2011-04-24T13:00:22.173 に答える
2

隠された引数はありません。すべての引数を明示的に見ることができます- argc, argv. そのコード行には、舞台裏にあるものは何もありません。

于 2011-04-24T11:09:41.070 に答える
2

コメントを見て他の回答を見ると、引数を指定しない場合に実行可能ファイルに渡される引数について疑問に思っていると思います。標準化されているかどうか、または例外が何であるかはわかりませんが、通常、この場合、実行可能ファイルを呼び出すために使用されたコマンドを指定する文字列になりますargc1argv[0]

app実行可能ファイルが呼び出され、そこにあると仮定しましょう/home/user/appdir

現在のディレクトリがアプリケーション ディレクトリで、'app' で起動する場合はargc1argv[0]になりますapp

あなたがアプリケーションのディレクトリから1つ上のディレクトリにいて、./appdir/appそれargc1呼び出すargv[0]と、appdir/app

アプリケーションを呼び出すときに引数を指定した場合。おそらく、アプリケーションにデバッグ情報を出力するように指示したいでしょうapp debug。この場合、argcになります2argv[0]になりますappargv[1]になりますdebug

于 2011-04-25T02:05:59.290 に答える
0

引数をどうするか尋ねているならQApplication、答えはdocs にあります。そのページには、Qt によって認識される引数がリストされています。

于 2011-04-24T11:27:43.143 に答える