为什么Qt的addWidget()可以接受1个参数的情况?

时间:2013-03-18 14:53:46

标签: qt

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

以上代码来自Qt程序。 当我在addWidget上按下F1时,以下描述来自Qt帮助。 如您所见,addWidget将接受2个参数。我的问题是为什么上面的第一句可以正常执行?

  

void QStatusBar :: addWidget(QWidget * widget,int stretch = 0)   将给定的窗口小部件添加到此状态栏,重新创建窗口小部件   还不是此QStatusBar对象的子代。拉伸参数   用于计算给定窗口小部件的合适大小作为状态   酒吧成长和缩小。默认的伸展因子是0,即给出   小部件空间最小。

     

小部件位于第一个永久小部件的最左侧   (请参阅addPermanentWidget())并可能被临时消息遮挡。

1 个答案:

答案 0 :(得分:5)

这是因为C ++具有default argument s的概念,这意味着声明为

的函数
void f(int i, int j=1);

可以通过

调用
f(42);

f(42,43);

在第一种情况下,函数调用等同于

f(42,1);

在你的情况下,

addWidget(label);

相当于

addWidget(label,0);