资源内的文件找不到本地文件

时间:2015-02-07 07:23:18

标签: c++ qt qml qt-quick resource-file

我有一个包含多个QML个文件的项目。所有这些都在资源文件中。现在我想从本地文件系统加载外部图像。但我找不到办法做到这一点。

Image {
    source: "images/image.png" // that tries to load file as 'qrc:/images/image.png'
    source: "file://images/image.png" // that does not work (file not found)
}

所以现在我有点困惑,我怎么能以正确的方式加载文件?

2 个答案:

答案 0 :(得分:5)

QML引擎假设存储在Qt资源系统中的QML文件中寻址的相对路径在该资源文件中得到解析。因此,如果您的QML文件位于资源中并且您想要访问应用程序目录路径中的文件,则应该从c ++设置路径:

engine.rootContext()->setContextProperty("applicationPath", "file://"+qApp->applicationDirPath()+ "/");

现在您可以使用QML解决该文件:

Image {
    source: applicationPath + "images/image.png"
}

答案 1 :(得分:1)

谢谢你的这篇文章。我编写了这段代码,发现它对我不起作用。我终于意识到问题出在哪里。只需使用 / 代替 //

context->setContextProperty("applicationPath","file:/"+qApp->applicationDirPath()+"/");