【问题标题】:Qt cant load any file QImageQt无法加载任何文件QImage
【发布时间】:2021-03-08 18:59:49
【问题描述】:

这是我的代码:

QImage cover(":/Images/cover-placeholder.jpg");

if (cover.isNull()) {
    cout << "File load Error!" << endl;
}

无论我上传哪个文件,它总是会引发错误。我也试过写文件的绝对路径,它仍然给出错误。我也试过这段代码:

QString fileName = QFileDialog::getOpenFileName();

QImage temp;
if (!temp.load(fileName)) {
   cout << "Cant load" << endl;
}

它也不起作用。有什么问题?

qrc 文件:

<RCC>
    <qresource prefix="/">
        <file>Images/cover-placeholder.jpg</file>
    </qresource>
</RCC>

【问题讨论】:

  • 检查你的路径,有一个 C 或 D 丢失(或者你的驱动器有任何字母)
  • @RoQuOTriX 无论如何都不起作用
  • 根据第一个代码,您在 .qrc 中有图像,对吗?
  • @eyllanesc 是的,我尝试使用“qrc:/Images/cover-placeholder.jpg”,但图片无法加载
  • @nick_red 将显示您的 .qrc

标签: c++ qt file qt5


【解决方案1】:

有些从网上下载的图片后缀与格式不对应,QImage使用后缀来检测图片的类型,所以我建议验证后缀是否是相同的格式。

要获取 QImage 的加载原因,必须使用 QImageReader:

QImageReader reader("/fullpath/of/cover-placeholder.jpg"); 
QImage img = reader.read() 
if(img.isNull())
{
    qDebug() << reader.errorString();
}

【讨论】:

    【解决方案2】:

    另外,如果您正在部署 Qt 应用程序,您应该在 app_dir/imageformats 目录下部署图像格式插件。插件有:qjpeg.dll、qgif.dll、qsvg.dll等

    【讨论】:

      猜你喜欢
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 2015-09-13
      • 1970-01-01
      相关资源
      最近更新 更多