解决Qt中某类的槽无法连接另一类的信号的问题
2014-01-07 12:08 chanrom 阅读(998) 评论(0) 编辑 收藏 举报遇到一个问题,纠结了比较久:在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