两个类,一个定义信号,一个接收,接收信号的类中对信号所在的类进行了实例化(类 *p);为啥信号发出去了,但是槽那边接收不到呢;
代码:
GsysUserDefineCalculate *p_usercalculate;---------这个是对信号所在类的实例化。 void slotCalculateIsOnchanged(int);这个是我的槽函数。 connect(p_usercalculate, SIGNAL(sigCalculateIsOnchanged(int)),this, SLOT(slotCalculateIsOnchanged(int))); 这个是我绑定的信号跟槽。
emit sigCalculateIsOnchanged(index);这个信号的发出。
signals:
void sigCalculateIsOnchanged(int index); 这个是我定义的信号;
求解------问题出在哪儿啊????
------解决思路----------------------
类A 定义信号,类B 定义槽函数。你的信号emit是在哪个类中,如果是在类B中,应该是A->sig(index);如果在类A中,那你检测下是不是绑定信号和emit的先后顺序有没有错。还有一种情况就是主线程发信号给子线程的槽函数,如果子线程中没有消息循环也是收不到信号的。因为你没有其他代码,所以只能推测。
------解决思路----------------------
GsysUserDefineCalculate *p_usercalculate;---------这个是对信号所在类的实例化。 void slotCalculateIsOnchanged(int);这个是我的槽函数。 connect(p_usercalculate, SIGNAL(sigCalculateIsOnchanged(int)),this, SLOT(slotCalculateIsOnchanged(int))); 这个是我绑定的信号跟槽。
emit sigCalculateIsOnchanged(index);这个信号的发出。
signals:
void sigCalculateIsOnchanged(int index); 这个是我定义的信号;
你确定实例化了?
GsysUserDefineCalculate *p_usercalculate;---------这个是对信号所在类的实例化
你这只是定义了一个类指针,都没有new出来,哪来的实例化?
------解决思路----------------------
p_usercalculate 检查一下,是否new 正确。
再检查一下, emit sigCalculateIsOnchanged(index); 是否在GsysUserDefineCalculate 这个类中发出。