最近用Qt5开发一个项目时候出现了一个信号和槽的问题,线程中信号大概如下:
signals:
void SignalIPv6(bool,QString,QString,const u_char*);
连接主界面上槽函数如下:
connect(myCaptureThread,SIGNAL(SignalIPv6(bool,QString,QString,const u_char *)),
this,SLOT(PraseIPv6Header(bool,QString,QString,const u_char*)));
这在Qt4中没有问题,但在Qt5中编译就出现问题,出现如下错误:
Object::connect: No such signal的错误
在网上查了许多资料后,发现原来除了返回值,Qt 4 的connect()
函数与 Qt 5 最大的区别在于,Qt 4 的 signal 和 slot 只有const char *
这么一种形式。
后来修改信号形式为:
void SignalIPv6(bool,QString,QString,const char*);
就没有问题了,因为项目要用到Libpcap,所以循环捕包函数为:
void SignalIPv6(bool,QString,QString,const u_char*);
最后强制转换一下const u_char为 const char* 就行了.
参考网址:http://my.oschina.net/cgshare/blog/193081?p={{totalPage}}
Object::connect: No such signal的错误
Object::connect: No such signal的错误
Object::connect: No such signal的错误