当前位置: 代码迷 >> QT开发 >> qt 信号与槽的小疑点,求解!求帮助
  详细解决方案

qt 信号与槽的小疑点,求解!求帮助

热度:155   发布时间:2016-04-25 03:10:09.0
qt 信号与槽的小问题,求解!求帮助
     两个类,一个定义信号,一个接收,接收信号的类中对信号所在的类进行了实例化(类   *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  这个类中发出。
  相关解决方案