在最近的项目中用到了QPixmap,涉及多线程操作QPixmap对象,为了简单,比如在线程1中构造了一个QPixmap对象,传入线程2,这时调用的函数为operator=(const QPixmap & pixmap),对于不了解QPixmap类的这个函数,误以为会进行深拷贝,导致后面的程序出错问题!该函数利用了浅拷贝,保存了有效数据的地址!如果要进行深拷贝,则需要调用QPixmap的另外一个成员函数copy!
下面对常用来拷贝QPixmap的函数进行了说明:
QPixmap::QPixmap(const QPixmap & pixmap) //拷贝构造函数,深拷贝
QPixmap & QPixmap::operator=(const QPixmap & pixmap) //浅拷贝
QPixmap QPixmap::copy(const QRect & rectangle = QRect()) const //深拷贝