0
   statusBar()->addWidget(locationLabel);
   statusBar()->addWidget(formulaLabel, 1);

上記のコードはQtプログラムからのものです。以下の説明は、F1を押したときのQtヘルプからのものaddWidgetです。ご覧のとおり、addWidget2つの引数を受け入れます。私の質問は、なぜ最初の文より上が正常に実行できるのかということです。

void QStatusBar :: addWidget(QWidget * widget、int Stretch = 0)指定されたウィジェットをこのステータスバーに追加し、ウィジェットがこのQStatusBarオブジェクトの子でない場合は親を変更します。ストレッチパラメータは、ステータスバーが拡大および縮小するときに、特定のウィジェットに適したサイズを計算するために使用されます。デフォルトのストレッチファクターは0です。つまり、ウィジェットに最小限のスペースを与えます。

ウィジェットは最初の永続ウィジェットの左端にあり(addPermanentWidget()を参照)、一時的なメッセージによって隠されている可能性があります。

4

1 に答える 1

5

これは、C ++にはdefault argumentsの概念があるためです。つまり、関数は次のように宣言されます。

void f(int i, int j=1);

によって呼び出すことができます

f(42);

f(42,43);

最初のケースでは、関数呼び出しは次のようになります。

f(42,1);

あなたの場合、

addWidget(label);

と同等です

addWidget(label,0);
于 2013-03-18T14:56:58.407 に答える