web-dev-qa-db-fra.com

Ubuntu SDK: difficulté à faire fonctionner les images dans l'application 'QML only' lors du déploiement sur un périphérique armhf

Lorsque je déploie mon programme QML uniquement sur le bureau à l'aide du kit de développement Ubuntu, les images que j'ai placées dans le même dossier que "Main.qml" sont accessibles et affichées correctement dans l'application à l'aide de la source . : "Pics/testpic.png"

Lorsqu'ils sont déployés sur un périphérique armhf, ils ne sont pas accessibles de cette manière et entraînent l'erreur QML QQuickImage: Impossible d'ouvrir: fichier: ///opt/click.ubuntu.com etc.

Quelle est la meilleure méthode pour que le package de clics incorpore un dossier d'images dans le fichier binaire où elles peuvent être consultées et utilisées par l'application?

Si je change la source en une adresse Web, elle affichera avec joie les images vers lesquelles je pointe, ce qui lui permet d'afficher correctement les images mais de ne pas accéder à mon propre dossier d'images.

Il y a une question similaire ici

Ajouter des fichiers image dans l'application Ubuntu QML avec des plugins C++ (qrc)

et koukouviou ajoute une note de bas de page à sa question:

J'ai fini par créer un projet qmake au lieu d'un projet cmake et à réaliser l'intégration de l'image dans le binaire . Pour mes besoins, ça va, puisque je viens de développer une simple application de validation de principe

donc 'incorporer l'image dans le binaire' sonne exactement ce que je veux faire.

Quelqu'un peut-il comprendre comment faire cela avec moi?

-Juste à noter, j'ai tenté un certain nombre de tentatives de "poignarder dans le noir". Ajout d'un fichier .qrc (qui semble être la solution pour une application 'qml with C++') mais l'accès via source: ": /Pics/testpic.png" ou la source: "qrc: /Pics/testpic.png" a entraîné le même ne peut pas ouvrir: fichier etc.

-Est également essayé d'ajouter le dossier dans le volet projet à gauche du SDK. Il apparaissait sous "fichiers supplémentaires" mais ne semble toujours pas être accessible lorsqu'il est déployé sur un périphérique armhf.

Toute aide à ce sujet serait très appréciée.

Modifier

Un aperçu rapide de l'endroit où je me suis trompé ...

Merci à koukouviou pour m'avoir conduit sur le bon chemin.

Mon problème principal est que j'ai démarré un projet QML App avec une interface utilisateur simple (qmake) . Je l'ai assemblé et testé en le déployant sur le bureau et lorsque j'en étais assez satisfait, j'ai essayé de le déployer sur un périphérique armhf. C'est alors que j'ai trouvé que les images ne montreraient pas.

Comme je n'avais pas de code C++ dans mon projet, il semblait inutile d'utiliser l'un des modèles de projet 'C++'. J'ai donc tenté à plusieurs reprises de "réparer" mon problème, mais j'utilisais toujours le modèle de projet 'Application QML App avec interface utilisateur simple'. .

Ajouter un fichier de ressources QT à un projet QML avec une interface utilisateur simple semble fonctionner: le . Qrc fichier peut être ajouté et rempli avec vos images mais toute référence à source: "qrc:/Pics/testpic.png" a échoué.

Autant que je sache, il n'est pas possible d'utiliser vos propres fichiers image avec une 'application QML avec une interface utilisateur simple' et de les déployer sur un périphérique armhf.

Après avoir lu la réponse de koukouviou, j'ai finalement pensé que je devais mordre la balle et démarrer un projet en utilisant le code C++. Cette fois, j'ai choisi l'application QtQuick avec l'interface utilisateur QML (qmake) qui a la description 'Crée un projet d'application C++ Ubuntu avec un exemple d'interface utilisateur contenant une étiquette et un bouton '.

Comme mentionné précédemment, j’avais évité cela auparavant car je n’avais aucun code C++ dans mon application et je ne comprenais pas vraiment comment utiliser le C++ dans ce contexte (ou dans un autre), mais j’étais heureux de constater qu’il n’était pas nécessaire pour moi de ajuster ou ajouter n'importe quel code C++ et je pourrais simplement apporter mes modifications à Main.qml et ajouter mes fichiers image aux ressources. En fait, il existait déjà un fichier de ressources .qrc dans l’arborescence du projet.

2
pHeLiOn

Voici ce que j'ai fait pour intégrer une image dans le "binaire":

J'utilise un projet qmake avec la structure de dossiers par défaut dans Ubuntu SDK. J'ai créé un répertoire pour stocker mes images: nom_projet/backend/your_click/images . Avec le dossier principal, j'ai créé un nouveau fichier de ressources fichier_ressources.qrc contenant les éléments suivants:

<!DOCTYPE RCC><RCC version="1.0">
<qresource>
    <file>images/bigredbutton.png</file>
</qresource>
</RCC>

Pour créer le fichier qrc, je pense que vous pouvez cliquer avec le bouton droit de la souris, Ajouter un nouveau ... , Qt , Fichier de ressources Qt et modifiez-le manuellement, ou créez-le manuellement à partir de rien. Je ne me souviens pas lequel a fonctionné pour moi, essayez-les et faites-le moi savoir, je modifierai la réponse pour les autres qui pourraient rencontrer le même problème à l'avenir.

Dans mon fichier Main.qml , j'utilise l'image comme ceci:

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

Voici une capture d'écran de la structure de mon projet, cela pourrait aider. Project structure with qrc file

1
koukouviou