Sur cette page

Initialisation du QML Runtime

documents QML sont chargés et exécutés par le QML Runtime. Ce dernier donne également accès à d'autres modules et types Qml de Qt ou de tiers.

De plus, le framework Qt fournit l’outil « qml », qui charge les fichiers « .qml ». Cet outil est utile pour développer et tester du code QML sans avoir à écrire d’application C++ pour charger le QML Runtime.

Pour exécuter une application utilisant QML, celle-ci doit appeler le QML Runtime. Pour appeler le QML Runtime :

  • Créez une application Qt C++.

    L'application doit charger l'QQmlEngine de l'une des manières suivantes :

  • Créer une application Qt Bridge.

    Pour plus de détails, consultez la documentation de Qt Bridge :

  • Utilisez l’outil « qml » pour charger et exécuter directement des fichiers QML.

    Cet outil est utile pour développer et tester du code QML sans avoir à écrire d'application pour charger le QML Runtime. Pour plus de détails, consultez la section « Prototypage avec l'outil QML Runtime ».

Initialisation de l'QML Runtime dans les applications C++

Initialisation avec QQuickView

QQuickView est une classe basée sur l’ QWindow qui permet de charger des fichiers QML. Par exemple, s’il existe un fichier QML, application.qml, cela ressemblera à ceci :

import QtQuick

Rectangle { width: 100; height: 100; color: "red" }

Il peut être chargé dans le fichier ` main.cpp ` d'une application Qt comme suit :

#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQuickView view;
    view.setSource(QUrl::fromLocalFile("application.qml"));
    view.show();

    return app.exec();
}

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

Fichiers de compilation

Utilisez la commande « find_package() » pour localiser le composant de module requis dans le paquet « Qt6 » :

find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)

Pour plus de détails, consultez la présentation « Compilation avec CMake ».

Pour configurer le module en vue d'une compilation avec qmake, ajoutez le module en tant que valeur de la variable QT dans le fichier .pro du projet :

QT += quick

Pour plus d’informations, consultez la section Création de fichiers de projet.

Création directe d’un QQmlEngine

Si application.qml ne contient aucun composant graphique, ou s’il est préférable d’éviter d’utiliser QQuickView pour d’autres raisons, l’ QQmlEngine peut être instancié directement. Dans ce cas, application.qml est chargé en tant qu’instance de QQmlComponent plutôt que d’être placé dans une vue :

#include <QGuiApplication>
#include <QQmlEngine>
#include <QQmlContext>
#include <QQmlComponent>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlEngine engine;
    QQmlContext *objectContext = new QQmlContext(engine.rootContext());

    QQmlComponent component(&engine, "application.qml");
    QObject *object = component.create(objectContext);

    // ... delete object and objectContext when necessary

    return app.exec();
}

Si vous n’utilisez aucun élément graphique provenant de Qt Quick, vous pouvez remplacer QGuiApplication par QCoreApplication dans le code ci-dessus. De cette manière, vous pouvez utiliser QML comme langage sans aucune dépendance vis-à-vis du Qt GUI module.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.