加载图像约500次后,此错误显示在Visual Studio Qimage:不记忆,返回空图像
After loading a image around 500 times , this error shows in visual studio QImage: out of memory, returning null image
我想在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.
我没有得到上述代码中的错误。有人可以告诉我如何解决这个问题吗?
首先在一个被称为多次的函数中为变量(pixmapTest
)分配和取消存储器,这是不够有意义的。您应该先分配内存,然后将所有内容分配给它。例如:
pixmapTest = new QPixmap();
for(size_t i = 0; i < 1000; i++){
// Call that function
}
delete pixmapTest;
除此之外,听起来您的应用程序正在泄漏内存。请注意,通过删除pixmapTest
,您不会删除内存jpegData
点。因此,在每个功能调用中,您应该照顾jpegData
点的内存。
很可能,您没有释放reply
本身。
也无需存储PixMap,也无需通过指针进行管理。按值保持价值,并在每次收到答复时分配新值。
例如:
class MyClass : public QWidget {
Q_OBJECT
Ui::MyClass ui;
explicit MyClass(QWidget *parent = nullptr) : QWidget(parent) {
ui.setupUi(this);
}
Q_SLOT void requestCompleted(QNetworkReply *reply) {
QPixmap pix;
pix.loadFromData(reply->readAll());
ui.qtLabel->setPixmap(pix);
reply->deleteLater();
}
};
相关文章:
- 将图像从 Android Studio 发送到 CPP
- (C++)(Visual Studio) 将高斯模糊滤镜应用于 RGB 中的灰度图像
- Qt Creator 在从 Visual Studio 2015 迁移后未显示 Qlabel 的边框图像
- 如何在Visual Studio中使用ITK配置的C 读取图像
- 加载图像约500次后,此错误显示在Visual Studio Qimage:不记忆,返回空图像
- 如何保持我在 Visual Studio SDL 中编写的图像窗口处于打开状态
- MS Visual Studio 2012和OpenCV 2.4.5-未显示图像
- Visual Studio不使用SDL渲染图像
- 线程加载图像的速度更快,直到它们在Studio中消失
- 在visual Studio 2012上使用SDL加载.BMP图像时,它只显示一个帧
- 如何计算图像的间距Visual studio
- 如果我在Visual Studio项目中将图像作为资源包含在内,这些图像是否会编译到可执行文件中
- 使用DevIL和Visual Studio 2010加载图像时出现问题
- 如何使用Visual studio将OpenCV图像查看窗口推送到QT GUI中
- 在visual studio 2010中使用c++将彩色图像转换为灰度
- Visual Studio 2010调试器可视化Qt图像类型
- 从visual studio IDE运行时,项目无法加载图像资源
- 如何将c++ (Visual Studio 2010)链接到图像输出事件监听器
- Visual Studio with OpenCV:即使程序退出,我也能保持图像窗口打开吗
- Visual Studio 2012 Express - 图像不会被编译/复制