3

我有一个包含多个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)
}

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

4

2 回答 2

5

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

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

现在您可以在 QML 中处理该文件:

Image {
    source: applicationPath + "images/image.png"
}
于 2015-02-07T08:59:00.170 回答
1

感谢您对这篇文章。我处理了这段代码,发现它对我不起作用。我终于意识到问题出在哪里了。只需使用/而不是//

context->setContextProperty("applicationPath","file:/"+qApp->applicationDirPath()+"/");
于 2020-04-03T20:21:30.133 回答