【发布时间】:2017-05-07 03:58:19
【问题描述】:
我想在 qt 标签上显示图像。我以QByteArray 的形式获取图像数据,并将其加载到标签中。
下面是代码:
在构造函数中定义
QPixmap *pixmapTest;
pixmapTest = NULL;
以下代码在一个被多次调用的函数中:
RequestCompleted(QNetworkReply *reply)
{
if(pixmapTest){
qDebug()<<"delete showImage Pixmap Object";
delete pixmapTest;
pixmapTest = NULL;
}
pixmapTest = new QPixmap();
QByteArray jpegData = reply->readAll();
pixmapTest->loadFromData(jpegData);
ui.qtLabel->setPixmap(*pixmapTest);
}
在调用此函数大约 500 次后,我收到此错误
QImage: out of memory, returning null image.
我没有得到上面代码中的错误。谁能告诉我如何解决这个问题?
【问题讨论】:
-
听起来你正在泄漏内存。大概是
jpegData... -
每次创建一个新的像素图对象似乎很奇怪,最好创建一次
pixmapTest,然后调用loadFromData。另见:stackoverflow.com/questions/15316008/… -
我假设您需要在某些时候执行删除(pixMapTest)。或者把它放在像 shared_ptr 这样的智能指针中
标签: c++ qt qimage qbytearray