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文件,我认为您可以右键单击, 添加新… , Qt , Qt资源文件并手动编辑该文件,或从头开始手动创建它。 我不记得哪一个适合我,试一试让我知道,我会编辑其他可能在将来遇到同样问题的答案。
在我的Main.qml文件中,我使用如下图像:
Image { id: btn width: 250; height: 250 fillMode: Image.PreserveAspectFit source: "qrc:images/bigredbutton.png" MouseArea { ... }
这是我的项目结构的截图,它可能会有所帮助。