web-dev-qa-db-fra.com

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

J'écris une application Ubuntu QML (téléphone) avec des plugins C++ utilisant Ubuntu-sdk. Mon application inclut une image png et, afin d’inclure l’image dans le fichier binaire (elle apparaît donc sur le téléphone), j’ai créé un fichier qrc.

Mon fichier qrc ressemble à ceci:

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

J'ai essayé ce que l'application QML avec le plugin C++ (cmake) ajoutant un fichier de ressources suggère et fait fonctionner la version Desktop. Cependant, lorsque je lance l'application sur mon Aquaris E4.5, l'image ne s'affiche pas et le message d'erreur suivant s'affiche:

QML QQuickImage: Impossible d'ouvrir: fichier: ///opt/click.ubuntu.com/ProjectName.Nickname/0.1/share/qml/app/graphics/bigredbutton.png

L'image que je veux montrer est stockée dans le répertoire/ProjectName/app/graphics. J'inclus le fichier qrc dans le répertoire backend et j'ajoute les lignes que la question liée indique dans le fichier CMakeLists.txt du répertoire backend:

set(CMAKE_AUTORCC ON) 
qt5_add_resources(RESOURCES modules/ProjectName/myres.qrc)

Où les fichiers image/qrc doivent-ils être stockés ou quelle autre configuration est nécessaire pour intégrer l'image dans le fichier binaire et lancer l'application avec succès sur un téléphone Ubuntu?

Je suis sur Ubuntu 15.10 en utilisant la dernière version d'ubuntu-sdk.

3
koukouviou

C'est ce qui a fonctionné pour moi.
Mes ressources.qrc se trouvent dans {PROJECT_DIR}/resources:

<RCC>
    <qresource prefix="/180">
        <file alias="five">180/five_180.png</file>
        ...
    </qresource>
</RCC>

Dans mon backend/CMakeLists.txt, j'ai:

qt5_add_resources(RESOURCE_ADDED ${CMAKE_SOURCE_DIR}/resources/resources.qrc)
...
add_library(Projectnamebackend MODULE
    ${RESOURCE_ADDED}
)
...
add_custom_target(Projectnamebackend-qmldir ALL
    COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/modules/Projectname/qmldir ${CMAKE_CURRENT_BINARY_DIR}/Projectname
    DEPENDS ${QMLFILES} ${RESOURCE_ADDED}
)

Je peux ensuite utiliser les images dans un fichier .cpp comme ceci:

m_image = QImage(":/180/one");

Le projet a la structure exemple-app par défaut, donnée par l'EDI.
J'espère que ça aide.

1
moritz