QT中解决QPixmap加载大图片报错的问题(错误指示到QPMCache::releaseKey函数第一行)

最近用Qt5,在window7 64位系统上,利用QPixmap加载图片,遇到对大尺寸的图片会报错。
图片的尺寸是:5000*1974,大小:1.56MB(详细信息:水平分辨率96 dpi,竖直分辨率96dpi,位深度24,分辨率单位2,颜色显示sRGB。)
原来的代码

QPixmap image(picFullPath);

报错到:

void QPMCache::releaseKey(const QPixmapCache::Key &key)
{
    if(key.d->key > keyArraySize || key.d->key <= 0)  //错误显示到这里
        return;
    key.d->key--;
    keyArray[key.d->key] = freeKey;
    freeKey = key.d->key;
    key.d->isValid = false;
    key.d->key = 0;
}

解决方法:

QImage image;
image.load(picFullPath);
QPixmap pixmapToShow = QPixmap::fromImage(image.scaled(QSize(200, 200), Qt::KeepAspectRatio));
...

这样之后再加载QPixmap的图片就不会报错了。
原理参考:https://blog.csdn.net/jiong_1988/article/details/7472159

你可能感兴趣的:(QT)