アプリケーションの に次の行を含める必要があることに気付きmain.cpp
ました。Qt
QApplication app(argc, argv);
argc
それがコマンドライン引数の数であり、コマンドライン引数のargv
配列リストであることはわかっています。しかし、私の頭の中の質問は次のとおりです。私がコンストラクターに渡していると同時に明示的に見ることができない引数は何ですか? 舞台裏で何が働いているのですか?
ありがとう。
Qt アプリケーションは、いくつかのコマンド ライン引数をサポートしています。たとえばapp.exe -style motif
、Windowsでは面白いです。基本的に、このコンストラクターでは、引数を解析するために QApplication クラスに引数を渡します。
そしてもちろん、次のように QApplication に何も渡さなくてもかまいません。
int c=1; char** v = &argv[0]; QApplication app(c,v);
そのため、Qt は何も解析せず、コマンド ライン引数を受け入れません。
argc と argv スコープについては、QApplication に渡すと、必要なすべてのポイントからアクセスできます。それらを QApplication に渡さない場合は、それらをグローバルにするように注意する必要があります。
隠された引数はありません。すべての引数を明示的に見ることができます- argc, argv
. そのコード行には、舞台裏にあるものは何もありません。
コメントを見て他の回答を見ると、引数を指定しない場合に実行可能ファイルに渡される引数について疑問に思っていると思います。標準化されているかどうか、または例外が何であるかはわかりませんが、通常、この場合、実行可能ファイルを呼び出すために使用されたコマンドを指定する文字列になりますargc
。1
argv[0]
app
実行可能ファイルが呼び出され、そこにあると仮定しましょう/home/user/appdir
。
現在のディレクトリがアプリケーション ディレクトリで、'app' で起動する場合はargc
、1
とargv[0]
になりますapp
。
あなたがアプリケーションのディレクトリから1つ上のディレクトリにいて、./appdir/app
それargc
を1
呼び出すargv[0]
と、appdir/app
アプリケーションを呼び出すときに引数を指定した場合。おそらく、アプリケーションにデバッグ情報を出力するように指示したいでしょうapp debug
。この場合、argc
になります2
、argv[0]
になりますapp
、argv[1]
になりますdebug
。
引数をどうするか尋ねているならQApplication
、答えはdocs にあります。そのページには、Qt によって認識される引数がリストされています。