解决Qt中某类的槽无法连接另一类的信号的问题

  遇到一个问题,纠结了比较久:在A类中发射了一个信号,但在B类中槽函数没有被调用。


 

  以下是部分源代码。

  首先是B类中connect的代码。在这个类中,实例化一个A类,连接A类的sendData(QByteArray data)信号,与B类中的槽函数receiveData2(QByteArray data)。

    ConnectServer *conn = new ConnectServer("program", parasMap);
    connect(conn, SIGNAL(sendData(QByteArray data)), this, SLOT(receiveData2(QByteArray data)));

  其次是A类中发射信号的代码:

        QByteArray data = reply->readAll();
        
        emit sendData(data);

  调试发现,B类中的槽函数没有被调用,查阅了很多资料,将B中的connect函数改写成如下:

    ConnectServer *conn = new ConnectServer("program", parasMap);
    connect(conn, SIGNAL(sendData(QByteArray)), this, SLOT(receiveData2(QByteArray)));

  Qt的信号和槽机制非常方便,但是在connect函数的检错这方面好像很弱,比如,不细心的话写错槽函数名称(如上写成receiveData),也不会有什么提示。

  参考资料(发现两个都和和调用参数有关系):

http://stackoverflow.com/questions/11722308/qt-slot-not-called

http://qt-project.org/forums/viewthread/15934

 

转载于:https://www.cnblogs.com/chanrom/p/3508531.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值