statusBar()->addWidget(locationLabel);
statusBar()->addWidget(formulaLabel, 1);
以上代码来自Qt程序。
当我在addWidget
上按下F1时,以下描述来自Qt帮助。
如您所见,addWidget
将接受2个参数。我的问题是为什么上面的第一句可以正常执行?
void QStatusBar :: addWidget(QWidget * widget,int stretch = 0) 将给定的窗口小部件添加到此状态栏,重新创建窗口小部件 还不是此QStatusBar对象的子代。拉伸参数 用于计算给定窗口小部件的合适大小作为状态 酒吧成长和缩小。默认的伸展因子是0,即给出 小部件空间最小。
小部件位于第一个永久小部件的最左侧 (请参阅addPermanentWidget())并可能被临时消息遮挡。
答案 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);