Qt信号槽连接失败的两种情况

Qt的信号槽在平常工作中用的很多,今天在调试程序的时候,出现了两种链接失败的情况。链接代码如下:

bool b = connect(this, SIGNAL(signalTest(std::string, unsigned int)), SLOT(onTest(std::string, unsigned int)));

当b返回为true的时候,信号发送后,不能触发槽函数。

1.原因是Qt里面没有注册std::string类型,需要注册后,才能真正链接成功。

qRegisterMetaType<std::string>("std::string");

但是加上以上代码之后,槽函数还是没有触发成功。

2.原因是该信号槽是跨线程执行,跨线程的信号槽是使用主线程中的消息循环实现的,而主线程中有个while循环一直在堵塞,导致消息主线程一直不能执行消息循环中的消息。

将主线程中的while循环放在线程中执行,槽函数成功触发。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值