如果图片的路径没错,那就是图片的后缀名被手动修改了(例如jpg格式被修改成了png),不同格式的图片存储方式有所差别,使用QPixmap的load方法加载时,默认是根据图片的后缀名区分格式,因此正确的加载方法是使用QPixmap的loadFromData方法,如下所示:
QFile fi(filePath);
if (fi.open(QIODevice::ReadOnly)) {
QPixmap pix;
pix.loadFromData(fi.readAll());
fi.close();
}
根据该方法,可以判断某个文件是否为图片,代码如下:
// 根据文件路径,判断文件是否为图片
bool isImage(const QString &filePath)
{
bool bRet = false;
QFile fi(filePath);
if (fi.open(QIODevice::ReadOnly)) {
QPixmap pix;
pix.loadFromData(fi.readAll());
bRet = !pix.isNull();
fi.close();
}
return bRet;
}