从缓冲区创建QImage,没有深层拷贝?

时间:2016-06-20 14:57:47

标签: c++ qt

在Qt中,如何从字节数组('uint8_t *`)构造一个QImage对象,而不创建一个深层副本,只是引用我的数据数组?

1 个答案:

答案 0 :(得分:6)

使用任何带uchar *的构造函数,例如

QImage::QImage(uchar *data, 
               int width, 
               int height, 
               int bytesPerLine, 
               Format format, 
               QImageCleanupFunction cleanupFunction = Q_NULLPTR, 
               void *cleanupInfo = Q_NULLPTR)

正如文件所说:

  

缓冲区必须在QImage的整个生命周期内以及尚未修改或以其他方式从原始缓冲区分离的所有副本中保持有效。图像不会在销毁时删除缓冲区。您可以提供函数指针cleanupFunction以及在销毁最后一个副本时将调用的额外指针cleanupInfo。