Qt 4.8.1,原始代码如下:
connect(this->m_CodeMemoryComboBox, SIGNAL(currentIndexChanged(QString)),
this, SLOT(updateCodeMemoryFormate()));
这真让我迷惑,[问题]我可以在使用QObject :: connect时将参数传递给slot函数吗? 这告诉我参数应该匹配,但是这里发生的事情,如果我删除那个参数,代码就会出错。
答案 0 :(得分:4)
Qt documentation描述了这一点。搜索"(事实上,一个插槽的签名可能比它收到的信号更短,因为它可以忽略额外的参数。)"在标题"信号和插槽"
下基本上,如果N
且第一个M
参数匹配类型,您可以将M <= N
- 参数信号连接到M
- 参数广告位。信号中的任何剩余参数都会被插槽忽略。
答案 1 :(得分:1)
QT Doc说,
信号和插槽机制是类型安全的:信号的签名必须与接收插槽的签名匹配。 (事实上,一个插槽的签名可能比它收到的信号更短,因为它可以忽略额外的参数。)