Ubuntu SDK:在部署到armhf设备时,难以让图像在“仅QML应用程序”中工作

当我使用Ubuntu SDK将我的仅QML程序部署到桌面时,可以使用源:“Pics / testpic.png”在应用程序中正确访问和显示我放在与“Main.qml”相同的文件夹中的图像。

当部署到armhf设备时,它们无法以这种方式访问​​,而是导致错误QML QQuickImage:无法打开:file:///opt/click.ubuntu.com等。

使单击包将图片文件夹合并到二进制文件中的最佳方法是什么,应用程序可以访问和使用它们?

如果我将源更改为url,它将很乐意显示我指向的任何图片,因此它可以显示图像,但无法访问我自己的图像文件夹。

这里有一个类似的问题

使用C ++插件(qrc)在Ubuntu QML应用程序中添加图像文件

koukouviou在他的问题上添加了一个脚注:

我最终创建了一个qmake项目,而不是一个cmake项目,并实现了将图像嵌入到二进制文件中 对于我的需求,没关系,因为我只是在开发一个简单的概念validation应用程序

因此’将图像嵌入二进制文件’听起来就像我想做的那样。

任何人都可以通过我的方式来解决这个问题吗?

– 值得注意的是,我尝试了一些“黑暗中的刺”尝试。 添加了一个.qrc文件(似乎是’qml with C ++’应用程序的解决方案)但是通过源:“:/ Pics / testpic.png”或源:“qrc:/Pics/testpic.png”导致访问同样无法打开:文件等

– 还尝试在SDK左侧的项目窗格中添加该文件夹。 它出现在“额外文件”下,但在部署到armhf设备时似乎仍然无法访问。

任何有关这方面的帮助将非常感谢。

编辑

我走错了地方的快速概述……

感谢koukouviou带我走上了正确的道路。

我的主要问题是我使用Simple UI(qmake)项目启动了QML应用程序 。 我将它放在一起并通过部署到桌面进行测试,当我对它足够高兴时,我尝试部署到armhf设备。 就在那时我发现图像不会显示出来。

我的项目中没有C ++代码,因此似乎没有必要使用任何“C ++”项目模板,因此我尝试“修复”我的问题,但我仍在使用“带有简单UI的QML应用程序”项目模板。

将QT资源文件添加到具有简单UI项目的QML应用程序看起来应该可以工作: .qrc文件可以添加并填充您的图像,但任何对source: "qrc:/Pics/testpic.png"引用source: "qrc:/Pics/testpic.png"失败了。

据我所知,不可能将自己的图像文件与“带有简单UI的QML应用程序”一起使用,并将其部署到armhf设备上。

在阅读了koukouviou的回答之后,我终于认为我只需要咬紧牙关并使用C ++代码启动一个项目。 这次我选择QtQuick App和QML UI(qmake) ,其中描述了“创建一个包含Label和Button的示例UI的C ++ Ubuntu应用程序项目”

如前所述,我之前已经避免过这种情况,因为我的应用程序中没有C ++代码,并且没有真正理解如何在这个(或任何)上下文中使用C ++,但我很高兴地发现我没有必要调整或添加任何C ++代码,我可以只对Main.qml进行更改,并将我的Image文件添加到参考资料中。 实际上,默认情况下,项目树中已存在.qrc资源文件。

这就是我在“二进制”中嵌入图像的方法:

我正在使用带有Ubuntu SDK中默认文件夹结构的qmake项目。 我创建了一个目录来存储我的图像: project_name / backend / your_click / images 。 使用后端文件夹,我创建了一个新的资源文件resource_file.qrc ,其中包含以下内容:

   images/bigredbutton.png   

要创建qrc文件,我认为您可以右键单击, 添加新…QtQt资源文件并手动编辑该文件,或从头开始手动创建它。 我不记得哪一个适合我,试一试让我知道,我会编辑其他可能在将来遇到同样问题的答案。

在我的Main.qml文件中,我使用如下图像:

 Image { id: btn width: 250; height: 250 fillMode: Image.PreserveAspectFit source: "qrc:images/bigredbutton.png" MouseArea { ... } 

这是我的项目结构的截图,它可能会有所帮助。 使用qrc文件的项目结构