Qt:通过常量引用的信号槽

Qt:signal slot pass by const reference

本文关键字:信号 引用 常量 Qt      更新时间:2023-10-16

许多qt示例执行了以下操作:

signal: passByConstRef(const QImage &)
slot: receivedByConstRef( const QImage &)

它们通过不同线程中的排队连接进行连接。线程1:

{QImage image; 
 image = fromData(...);
 emit passByConstRef(image);
}

线程2:

receivedByConstRef(const QImage& image){
   ...
   pixmap = fromImage(image);
   ...
 }

由于信号槽通过常量Ref的QImage,这意味着没有复制发生,那么当构建"像素图"时,线程1中"图像"的寿命是否可能结束,并导致线程2中构建"像素地图"的失败。

通过引用传递参数时,将在排队连接中发送副本。事实上,当您有一个排队的连接时,参数总是被复制的。因此,在这里,图像的寿命不会有任何问题,因为它将被复制而不是通过引用传递。