• 5687阅读
  • 4回复

主线程定义一个signal,子线程定义一个slot,无法沟通 [复制链接]

上一主题 下一主题
离线succulent
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-25
— 本帖被 XChinux 执行加亮操作(2008-11-30) —
主线程一个signal,测试正常,能发送给主线程内任何一个slot
子线程定义一个slot,测试正常,能接受子线程内任何一个signal,包括主线程incomingConnection函数中的signal也能接受
但是,在主线程中定义了一个新的函数,在这个函数内发送signal,子线程中的这个slot就是接受不了,死活接受不了,请问问题可能出现在哪里
离线succulent
只看该作者 1楼 发表于: 2008-11-25
详细点说,大概是这样子的
main定义为A类
server定义为B类
thread定义为C类
在A中定义signal toserver
在B中定义signal tothread和slot frommain
在C中定义slot fromserver
signal toserver可以传送到slot frommain中,然后在slot frommain中想emit tothread,传递到C类的slot fromserver,这步就实现不了了
signal和slot单独测试过,都没问题,而且,如果在B类中的主函数,也就是thread.start这个函数执行的地方emit tothread,就可以正常接受了,但是要在slot frommain中来做,就不行!!

反之,从C类中一步步传送signal到main中,就实现得很好
百思不得其解啊
离线succulent
只看该作者 2楼 发表于: 2008-11-25
用了Qt::DirectConnection,还是接受不到,能检查的都检查过了,请问问题还可能出现在哪呢
离线succulent
只看该作者 3楼 发表于: 2008-11-25
搞定了,原因在于,这个程序里,thread在传送信息后就关掉了,当要把signal再传送过来时,thread没有在运行,当然无法反应
离线sake
只看该作者 4楼 发表于: 2008-11-26
自问自答,好犀利
快速回复
限100 字节
 
上一个 下一个