注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沙漠里de烟雨

原创分享,禁止转载

 
 
 

日志

 
 

Qt---在线程中传递类对象,槽函数不响应  

2014-07-11 17:55:08|  分类: QT5.x与QML |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
经常在线程中通过signal 和slot来传递如const QString&  或自定义的类对象 const MyData& 时,发现槽不响应,当然也包括信号不传递。

然传递基本类型,如 int ,double ,bool 等这些变量时,信号连接是通的,所以,在这种情况下,如果要传递类对象,建议传递对象的指针。
此时,可能要对这片内存做读写保护。

更安全的方法是:使用qRegisterMetatype去注册这个类,因为Qt对于线程间传递的对象类型只适用于基本数据类型(int,double,bool等),而QString,自定义类型则需要先注册。可以注册成值类型或是引用类型,之后便可值传递或引用传递了,此时使用值传递而非引用才是安全方法,引用毕竟是对另一线程的内在空间的访问,不够安全。

说到共享内在,Qt里有QSharedMemory类作支持,可安全的在不同线程或进程间进行数据共享。这里不述。
  评论这张
 
阅读(520)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017