Qt信号槽不响应的几种原因

用Qt进行信号与信号槽连接后,会出现信号槽不响应信号的情况,原因可能是以下的情况:

  1. 类没有声明Q_OBJECT;

  2. 槽函数没有定义为pubic/private slots;

  3. 信号和槽之间存在参数传递,但是二者的参数数量或者类型不一致(信号里的参数数量可以多于槽函数里的参数数量,但是二者都有的参数,类型必须对应)

  4. 事件被子控件过滤掉了。比如QListWidget,当QListWidgetItem已经处理keypress事件后,QListWidget就不能响应itemDoubleClicked事件了

  5. 信号槽的参数是自定义的,这时需要用qRegisterMetaType注册一下这种类型

你可能感兴趣的:(C++,c++,qt,开发语言)