我有一个包含多个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)
}
所以现在我有点困惑,我怎么能以正确的方式加载文件?
答案 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()+"/");