c++ - 为什么连接的信号有参数但插槽没有参数?

标签 c++ qt signals signals-slots slots

Qt 4.8.1,原代码是这样的:

connect(this->m_CodeMemoryComboBox, SIGNAL(currentIndexChanged(QString)),
      this, SLOT(updateCodeMemoryFormate()));

这真的让我很困惑,[问题]我可以在使用 QObject::connect 时将参数传递给槽函数吗? 这告诉我参数应该匹配,但是这里发生了什么,如果我删除那个参数,代码就会出错。

最佳答案

Qt documentation描述这个。在“信号和槽”标题下搜索“(事实上,槽的签名可能比它接收到的信号更短,因为它可以忽略额外的参数。)”

基本上,您可以连接一个 N -参数信号到M -parameter slot if M <= N第一个M参数类型匹配。来自信号的任何剩余参数都会被插槽忽略。

关于c++ - 为什么连接的信号有参数但插槽没有参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18959744/

相关文章:

c++ - std::string 中的非法指令

c++ - FLTK版本1.3.2,Visual Studio 2012和Stroustrup的PPP书的第一个示例

c++ - Qt3D QAbstractTextureImage 像素化

c - SIGINT 仅捕获一次

bash - Ubuntu 上列出所有信号的 bash 命令是什么?

C 信号不能正常工作

c++ - 为什么 std::atomic 初始化不进行原子释放,以便其他线程可以看到初始化值?

用于 Windows 的 C++11 编译器

c++ - 单击 QDoubleSpinBox 的上/下控件后,如何获取步骤和当前值?

c++ - QVariant 和 std::size_t