当我使用 Ubuntu SDK 将 QML 程序部署到桌面时,我放置在同一个文件夹中的图像可以Main.qml
在应用程序中正确访问和显示source: "Pics/testpic.png"
当部署到 armhf 设备时,它们无法以这种方式访问,而是会导致类似以下错误
QML QQuickImage: Cannot open: file:///opt/click.ubuntu.com
让点击包将图片文件夹合并到二进制文件中以便应用程序可以访问和使用它们的最佳方法是什么?
如果我将源更改为网址,它会很乐意显示我指向的任何图片,因此它能够正常显示图像,但无法访问我自己的图像文件夹。
这里有类似的问题
使用 C++ 插件(qrc)在 Ubuntu QML 应用中添加图像文件
和库库维乌在他的问题中添加了一个脚注:
我最终创建了一个 qmake 项目而不是 cmake 项目,并实现了将图像嵌入二进制文件。对于我的需求来说,这没问题,因为我只是在开发一个简单的概念验证应用程序
所以“将图像嵌入二进制文件”听起来正是我想要做的。
有人可以和我一起演示一下怎么做吗?
需要说明的是,我曾对此进行过多次“盲目尝试”。
添加了一个.qrc 文件(它似乎是“带有 C++ 的 qml”应用程序的解决方案)但通过访问
source: ":/Pics/testpic.png"
或source: "qrc:/Pics/testpic.png"
导致相同的结果Cannot open: file
等。还尝试在 SDK 左侧的项目窗格中添加文件夹。它显示在“额外文件”下,但部署到 armhf 设备时似乎仍然无法访问。
任何帮助都将非常感激。
编辑:快速概述我哪里做错了……
感谢koukouviou引导我走上正确的道路。
我的主要问题是我开始了具有简单 UI 的 QML 应用程序(qmake)项目。我将其组合起来并通过部署到桌面进行测试,当我对它感到满意时,我尝试部署到 armhf 设备。就在那时,我发现图像无法显示。
我的项目中没有 C++ 代码,因此似乎没有必要使用任何“C++”项目模板,因此我尝试“修复”我的问题,但我仍然使用“带有简单 UI 的 QML 应用程序”项目模板。
将 QT 资源文件添加到具有简单 UI 的 QML 应用程序项目看起来应该可以工作:.qrc可以添加文件并填充您的图像,但任何引用都source: "qrc:/Pics/testpic.png"
失败。
据我所知,无法将您自己的图像文件与“带有简单 UI 的 QML 应用程序”一起使用并将其部署到 armhf 设备。
在阅读了 koukouviou 的回答后,我终于决定咬紧牙关,开始使用 C++ 代码进行项目。这次我选择了带有 QML UI (qmake) 的 QtQuick App其中有描述“创建一个 C++ Ubuntu 应用程序项目,其中包含一个标签和一个按钮的示例 UI”。
如前所述,我之前一直避免这样做,因为我的应用程序中没有 C++ 代码,并且不真正了解如何在此(或任何)上下文中使用 C++,但我很高兴地发现,我不需要调整或添加任何 C++ 代码,我只需对图像文件进行更改并将它添加到资源中即可。事实上,默认情况下,项目树中Main.qml
已经有一个资源文件。.qrc
答案1
这就是我在“二进制”中嵌入图像所做的操作:
我正在使用制作使用 Ubuntu SDK 中的默认文件夹结构创建项目。我创建了一个目录来存储我的图像:项目名称/后端/your_click/图像. 使用 backend 文件夹我创建了一个新的资源文件资源文件.qrc包含以下内容:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>images/bigredbutton.png</file>
</qresource>
</RCC>
要创建 qrc 文件,我认为你可以右键单击,添新 ...,Qt,Qt资源文件并手动编辑文件,或从头开始手动创建文件。我不记得哪一个对我有用,请尝试一下并告诉我,我会为将来可能遇到相同问题的其他人编辑答案。
在我的主文件.qml文件我使用这样的图像:
Image {
id: btn
width: 250; height: 250
fillMode: Image.PreserveAspectFit
source: "qrc:images/bigredbutton.png"
MouseArea {
...
}