无法在QML图像中加载图像源

时间:2014-09-30 15:55:25

标签: image qt qml

这看起来很基本,但由于某种原因,我无法让图像源在下面的超简单QML应用程序中运行。

仅供参考,我正在运行基于Qt 5.3.2的Mac OS-X 10.9.5,Qt Creator 3.2.1。

import QtQuick 2.3
import QtQuick.Controls 1.2

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Test")

    Image {
        id: image1
        x: 10
        y: 10
        width: 100
        height: 100
        source: "testImage.png"
    }
} 

我收到以下错误:

qrc:/main.qml:10:5: QML Image: Cannot open: qrc:/testImage.png

创建应用程序窗口但不显示图像。我也试过在Rectangle中包装图像,但这没有帮助。

我在这里做错了什么?

“testImage.png”位于项目目录中,我尝试了各种方法来使用资源指定图像路径,绝对,相对,甚至使用QML UI设计器手动指定图像源。

我还要提到为了让Qt 5.3.2正常工作,我遵循了建议HERE的修改。

感谢。

6 个答案:

答案 0 :(得分:29)

我认为您的qml文件位于资源中,因此请尝试将您的testImage.png图片放入资源中。重新编译应用程序,运行它并检查图像是否正常工作。

所有人都应该在一起。例如:

enter image description here

我的代码:

Image
{
    source: "images/earth.png"

如果我从资源中删除此图像,我也会收到此错误,但图像仍然位于文件系统中的正确位置。

qml源放置在资源中时,从qml加载的所有文件也应该在资源中(Qt在资源中搜索此文件,而不是在文件系统中)。

答案 1 :(得分:2)

如果要从本地文件系统查找,请获取文件路径和前缀“ file:”作为源=“ file:/root/Desktop/Rathod.png”

答案 2 :(得分:0)

如果使用的是qrc,请确保将图像添加到项目中。仅将其放在源目录中可能还不够。 例如,我的main.qml位于特定目录中。我将.png移到同一目录中。然后,我“添加现有文件..”并将.png添加到项目中。我的图片有以下内容 来源:“ qrc:/image.png”

答案 3 :(得分:0)

可能有两个问题:

  1. 该图像已损坏,尽管该图像已在所有预览中正确显示IconImage拒绝加载。尝试使用另一个可以正常工作的图像 看来Qt Image loader对图像格式非常敏感。
  2. 存在资源缓存问题。尝试在编译文件夹中删除qml_qmlcachea.qrc,然后重试

答案 4 :(得分:0)

我遇到了类似的问题,并通过以下方式解决了该问题:

  1. 右键单击您的qml.qrc,然后选择“打开方式”->“资源 编辑器”
  2. 在资源编辑器中,单击“添加丢失的文件”,然后选择您的图片
  3. 最后在设计编辑器中打开您的qml文件,然后单击Image元素,在右侧选择图像的路径

答案 5 :(得分:0)

尝试在“项目”->“构建设置”下关闭Shadow Build。