QML: comment spécifier le chemin du fichier image par rapport au dossier de l'application
Nous développons notre premier Qt/QML application (en essayant de la technologie). Bien que la technologie semble très prometteur en un clin d'œil, nous avons dû faire face jusqu'à de nombreux imprévus bizarre questions que presque donner au début.
Ici l'une de ces question.
Nous voulons les dossiers suivants de mise en page pour notre application:
--> ApplicationFolder
|--> qml //QML files (also structured by subfolders)
|--> resources //Application resources (images, sounds, data-files, etc.)
| |--> images //Image resources (also structured by subfolders)
| |--> data //Different data files
| |--> ... //Other resources
|--> Application.exe //Application executable
|--> *.dll //DLLs application depends on
Le problème est que dans le but de spécifier un fichier d'image Image
QML article que nous avons à utiliser le chemin relatif au fichier QML?! C'est absolument fou. Au cours du développement des fichiers déplacés parfois entre les dossiers (vous vous déplacez fichier QML et de corriger tout le chemin qu'il a?!); certains différents fichiers QML se référer à une même image (même ressource d'image mais différentes chemin réel dans les différents fichiers QML).
La question est donc: comment faire pour spécifier le chemin de l'image par rapport au dossier de l'application? Est-il possible?
Merci d'avance!
PS. À l'aide de Qt sur les ressources du système (lorsque les ressources sont intégrées dans l'exécutable) n'est pas une option dans notre cas. Nous avons besoin de matières premières sur le disque (y compris les fichiers QML lui-même, au moins durant la phase de développement).
PPS. A écrit cette question après avoir passé une journée entière à résoudre le problème par moi-même au moyen de documents/google/stackoverflow; sans succès, à tous (la plupart des exemples d'utilisation de la ressource de l'intégration, d'autres sont trop simple et il suffit d'utiliser des chemins relatifs).
This is absolutely insane. During development files sometimes moved between folders (you move QML file and have to fix all the path it has ?!);
-> Ce qui est fou sur le développement au cours de l'élaboration de la phrase? Évidemment, si vous ne concevez pas correctement, il suffit de faire-cargo culte de la programmation, vous pouvez avoir besoin de ré-écrire des trucs avec un nouveau design. Est-il aussi fou que vous renommez quelque chose de partout lorsque vous renommez quelque chose parce que vous vous rendez compte que vous avez donné un mauvais nom à une variable? Allez, Alexey... 🙂 Sed est votre ami ...C'est fou parce que si le fichier image de rester à la même place, puis il est absolument normalement pour souhaiter la référence à ce fichier reste le même dans le code de l'application et ne dépendent pas de déplacement d'autres choses. N'est-ce pas ? Si certains fichier QML se référer à une image et cette image rester au même endroit tout le temps, pourquoi on a besoin de fixer que QML chaque fois qu'il veut le déplacer vers un autre dossier ? C'est ce que je suis en train de parler. Lors de l'utilisation de la scfq fichiers que vous avez pas ce problème, mais avec des matières premières que nous juste ne pouvez pas trouver une solution, malheureusement.
OriginalL'auteur Alexey Kryshen | 2014-12-18
Vous devez vous connecter pour publier un commentaire.
Si vous ne pouvez pas utiliser un .qrc fichier pour vos images, vous pouvez essayer ceci:
Dans QML, vous pouvez faire:
Noter que ce code n'est pas testé.
"file:///"
àQGuiApplication::applicationDirPath()
. Et il semble que injectésapplicationDirPath
valeur disponible dans toutes les QML fichiers chargés par l'application, non seulement dans les principales chargé parengine.load(...)
(j'étais inquiète au début). Pourrait être améliorée en passant répertoire de travail courant du processus, afin d'éviter la/../
à la relative ressources chemin et devrait fonctionner dans de débogage s'exécute dans QT Creator et dans la version autonome d'application s'exécute. Merci beaucoup!Je ne pouvais pas dire que je n'ai pas testé avec un indice de référence. Il est très facile à mettre en place un benchmark avec Qt Creator de l'assistant de projet si (encore une QML de référence), et Créateur du QML Profiler peut vous aider à identifier les goulots d'étranglement.
Merci @Mitch! Va enquêter sur le QML profilage.
Juste besoin de mettre le
file:///
en face. Merci de poster votre commentaire @AlexeyKryshen !que cela ne fonctionne pas pour moi, aussi est-il de même pour appareil android?
OriginalL'auteur Mitch
travaillera si le répertoire de travail est mis à la ApplicationFolder
remarque: lors de l'exécution de QtCreator, vérifiez que le répertoire de l'application est en cours d'exécution (j'avais mes exécution de l'application dans mon répertoire home, même si le répertoire de travail a été correctement définie dans la configuration d'exécution (après avoir exécuté une seule fois dans une fenêtre de terminal magiquement, fixe lui-même) )
OriginalL'auteur newmind