调试时发现有些信号发射了,但是与之相关的槽函数没有执行的原因,目前遇到的有:
1.语法错误
仔细检查格式是不是对的,然后参数是否对应
2.一个类中的信号与另一个类中的槽函数
在SIGNAL()和SLOT()中的括号里写的直接就是槽和信号的名字,不用再加作用域。
例如类A和类B,A中的某个槽函数Slot_A()与B的信号Signal_B(),然后A在B中实例化为a,那么在B中connect(this, Signal_B(), &a, A::Slot_A() );这句话错的蛮严重的。
应为connect(this, SIGNAL( Signal_B() ), &a, SLOT( Slot_A() ));
3.有遇到一个:槽函数没有声明成public/protected... slots: ,而只声明成一个函数了。
4.在a.exec()前加无限循环了。参见 Qt main函数a.exec()函数。
2017/11/20 今天有一个同事也遇到了这个问题,他是在Qt那个主的类中的一个槽函数有while死循环,而这个槽函数的信号一直被一个线程发射,所以orz。
待增。。。。