c – Qt:信号槽通过const参考
发布时间:2020-12-16 09:56:21 所属栏目:百科 来源:网络整理
导读:许多qt示例做了以下事情: signal: passByConstRef(const QImage )slot: receivedByConstRef( const QImage ) 它们通过不同线程中的排队连接进行连接. 在主题1中: {QImage image; image = fromData(...); emit passByConstRef(image);} 在主题2中: receive
许多qt示例做了以下事情:
signal: passByConstRef(const QImage &) slot: receivedByConstRef( const QImage &) 它们通过不同线程中的排队连接进行连接. {QImage image; image = fromData(...); emit passByConstRef(image); } 在主题2中: receivedByConstRef(const QImage& image){ ... pixmap = fromImage(image); ... } 由于信号槽通过const Ref传递QImage,这意味着没有复制发生,有可能在构建“pixmap”时,线程1中“图像”的生命周期结束并导致构造失败线程2中的“pixmap”. 解决方法
通过引用传递参数时,将在排队连接中发送副本.实际上,当您有排队连接时,始终会复制参数.所以这里的图像的生命周期没有任何问题,因为它将被复制而不是通过引用传递.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |