Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

Qt

Choisissez la catégorie, puis la rubrique :

Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

Routine d'interface utilisateur Qt Declarative

Les documents QML sont chargés et exécutés par la routine QML. Elle inclut le moteur de l'interface utilisateur Declarative ainsi que les éléments intégrés au QML et les plug-ins. Elle fournit aussi un accès aux éléments QML tiers et aux modules.

Les applications qui utilisent le QML ont besoin d'invoquer la routine QML afin d'exécuter les documents QML. Cela peut être fait en créant un QDeclarativeView ou un QDeclarativeEngine, comme décrit ci-dessous. De plus, le paquet de l'interface utilisateur Declarative inclut l'outil Qt QML Viewer, permettant de charger des fichiers .qml. Cet outil est pratique pour développer et tester du code QML sans avoir à écrire une application C++ pour charger la routine QML.

Déploiement d'applications basées sur QML

Pour déployer une application qui utilise QML, la routine QML doit être invoquée par l'application. Cela est effectué en écrivant une application C++ Qt qui charge le QDeclarativeEngine soit :

Déploiement avec QDeclarativeView

QDeclarativeView est une classe basée sur QWidget qui peut charger des fichiers QML. Par exemple, s'il y a un fichier QML, application.qml, comme celui-ci :

 import QtQuick 1.0
 
 Rectangle { width: 100; height: 100; color: "red" }

Il peut être chargé dans une application Qt, à l'aide du fichier main.cpp suivant :

 #include <QApplication>
 #include <QDeclarativeView>
 
 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
 
     QDeclarativeView view;
     view.setSource(QUrl::fromLocalFile("application.qml"));
     view.show();
 
     return app.exec();
 }

Cela crée une vue basée sur QWidget qui affiche le contenu de application.qml.

Le fichier de projet .pro de l'application doit spécifier le module declarative dans la variable QT. Par exemple :

 TEMPLATE += app
 QT += gui declarative
 SOURCES += main.cpp

Créer un QDeclarativeEngine directement

Si le fichier application.qml n'a aucun composant graphique ou s'il est préférable d'éviter QDeclarativeView pour d'autres raisons, le QDeclarativeEngine peut être construit directement. Dans ce cas, application.qml est chargé dans une instance de QDeclarativeComponent au lieu d'être placé dans une vue :

 #include <QApplication>
 #include <QDeclarativeEngine>
 #include <QDeclarativeContext>
 #include <QDeclarativeComponent>
 
 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
 
     QDeclarativeEngine engine;
     QDeclarativeContext *objectContext = new QDeclarativeContext(engine.rootContext());
 
     QDeclarativeComponent component(&engine, "application.qml");
     QObject *object = component.create(objectContext);
 
     // ... détruit objet et objectContext lorsque nécessaire
 
     return app.exec();
 }

Voir comment utiliser QML dans les applications C++ pour plus d'informations sur l'utilisation de QDeclarativeEngine, QDeclarativeContext et QDeclarativeComponent, et sur l'inclusion de fichier QML avec le système de ressources Qt.

Développer et conception de prototype avec le ''QML Viewer''

Le paquet d'interface utilisateur Declarative inclut un outil pour la routine QML, le Qt QML Viewer, permettant de charger et d'afficher les documents QML. Cela est utile lors de la phase de développement de l'application pour concevoir des prototypes d'applications basées sur QML sans écrire vos propres applications C++ afin de lancer la routine QML.

Voir la documentation de QML Viewer pour plus de détails.

Remerciements

Merci à Alexandre Laurent pour la traduction ainsi qu'à Dimitry Ernot, Jonathan Courtois et Claude Leloup pour leur relecture !

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2020 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur, une redirection cassée ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -

Partenaire : Hébergement Web