2014-09-30 458 views
11

这似乎很基本,但出于某种原因,我无法使图像源在下面的超简单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

谢谢。

+0

https://doc.qt.io/qt-5/qml-qtquick-image.html#source-prop'URL可能是绝对的,或者相对于组件的URL。qrc URL是相对的。你也可以使用file:///home/user/testImage.png,或者你可以定义你自己的[QQuickImageProvider](https://doc.qt.io/qt-5/qquickimageprovider.html),它可以处理你自己的计划,例如'图片{source:“image://myimageprovider/testImage.png”}' – bitek 2017-04-21 12:38:17

回答

24

我想你的qml文件是在资源中,所以请尝试将您的testImage.png图片放在资源中。重新编译应用程序,运行它并检查图像是否正常工作。

所有应该在一起。例如:

enter image description here

我的代码:

Image 
{ 
    source: "images/earth.png" 

如果我删除资源这个形象,我会在文件系统中的正确的地方得到这个错误太多,但仍然图像。

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

+1

太棒了,工作!似乎我已经做了一百万次之前,但没有记得需要增加资源。谢谢! – 2014-09-30 17:09:41

+2

@BruceDean欢迎您:) – Chernobyl 2014-09-30 17:44:39

+2

它也可以,如果你把图像放在qrc资源文件中,并访问它,如下所示:图片{qrc:/images/earth.png“ } – SGrebenkin 2014-10-03 06:25:44