2010-10-11 24 views
8

Je construis une application avec des technologies mixtes d'interface utilisateur (principalement C++ avec certains composants QML inclus).Quelle est la meilleure façon d'inclure des sources QML dans votre version d'application?

Supposons que j'ai un élément QML que je veux montrer dans une QDeclarativeView en utilisant la syntaxe comme ceci:

view = new QDeclarativeView(QUrl::fromLocalFile("foobar.qml")); 

J'ai ajouté foobar.qml à mon projet dans Qt Creator qui ajoute automatiquement cette ligne au. fichier pro:

OTHER_FILES += \ 
    foobar.qml 

maintenant, vous attendez, y compris le fichier dans le projet implique qu'il doit être copié dans le dossier de construction, mais il ne fonctionne pas, et je reçois une erreur de manquer dans foobar.qml le dossier de construction lorsque je lance l'application. Je n'aimerais pas ajouter des étapes de construction personnalisées juste pour copier les sources QML, alors y a-t-il une façon "de facto" de le faire?

Répondre

7

Une solution évidente serait d'inclure la source QML via Qt's resource system. Ceci est indiqué sur la page de doc sur deploying QML based applications.

EDIT: Voici le complete solution. Je devrais apprendre à RTFM.

+0

C'est ce que je fais dans mon application. Fondamentalement quelque chose comme 'view = new QDeclarativeView (QUrl (" qrc: /qml/scene.qml "));' – Dan

+1

Oui, les ressources seraient la bonne voie à suivre. Sauf si l'application vit dans un environnement protégé - ou vous vous en fichez, auquel cas vous pouvez expédier côte à côte. Dans les ensembles Mac, vous les placez généralement dans le dossier des ressources de l'ensemble. –

3

Utilisez-vous des builds d'ombre? Si c'est le cas, l'application est construite dans un répertoire parallèle au code source. Pour tester, vous pouvez changer le répertoire de travail dans Qt Creator (Projets dans la barre de gauche, puis Exécution de votre cible de construction). L'utilisation des ressources semble infaillible, mais elle nécessite une reconstruction chaque fois que l'une des ressources est modifiée.