QQmlApplicationEngine Class
QQmlApplicationEngine offre un moyen pratique de charger une application à partir d'un seul fichier QML. En savoir plus...
| En-tête : | #include <QQmlApplicationEngine> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake : | QT += qml |
| Hérite de : | QQmlEngine |
Fonctions publiques
| QQmlApplicationEngine(QObject *parent = nullptr) | |
| QQmlApplicationEngine(const QString &filePath, QObject *parent = nullptr) | |
| QQmlApplicationEngine(const QUrl &url, QObject *parent = nullptr) | |
(since 6.5) | QQmlApplicationEngine(QAnyStringView uri, QAnyStringView typeName, QObject *parent = nullptr) |
| virtual | ~QQmlApplicationEngine() override |
| QList<QObject *> | rootObjects() const |
Slots publics
| void | load(const QString &filePath) |
| void | load(const QUrl &url) |
| void | loadData(const QByteArray &data, const QUrl &url = QUrl()) |
(since 6.5) void | loadFromModule(QAnyStringView uri, QAnyStringView typeName) |
(since 6.0) void | setExtraFileSelectors(const QStringList &extraFileSelectors) |
| void | setInitialProperties(const QVariantMap &initialProperties) |
Signaux
| void | objectCreated(QObject *object, const QUrl &url) |
(since 6.4) void | objectCreationFailed(const QUrl &url) |
Description détaillée
Cette classe combine une instance de ` QQmlEngine ` et une instance de ` QQmlComponent ` afin de fournir un moyen pratique de charger un seul fichier QML. Elle expose également certaines fonctionnalités centrales de l'application à QML, que l'on contrôlerait normalement depuis C++ dans le cadre d'une application hybride C++/QML.
Elle peut être utilisée comme suit :
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine("main.qml");
return app.exec();
}Remarque : contrairement à QQuickView, QQmlApplicationEngine ne crée pas automatiquement de fenêtre racine. Si vous utilisez des éléments visuels provenant de Qt Quick, vous devrez les placer à l’intérieur d’un Window.
Vous pouvez également utiliser QCoreApplication avec QQmlApplicationEngine, si vous n'utilisez aucun module QML nécessitant un QGuiApplication (tel que QtQuick).
Liste des modifications de configuration par rapport à un QQmlEngine par défaut :
- quitConnexion de Qt XML-ph-0000@deepl.internal() à QCoreApplication::quit()
- Charge automatiquement les fichiers de traduction à partir d’un répertoire i18n adjacent au fichier QML principal.
- Les traductions sont rechargées lorsque la propriété
QJSEngine::uiLanguage/Qt.uiLanguageest modifiée. - Définit automatiquement un contrôleur d’incubation si la scène contient un QQuickWindow.
- Définit automatiquement un
QQmlFileSelectorcomme intercepteur d’URL, appliquant des sélecteurs de fichiers à tous les fichiers QML et ressources.
Le comportement du moteur peut être affiné davantage en utilisant les méthodes héritées de ` QQmlEngine`.
Remarque : les fichiersde traduction doivent comporter le préfixe « qml_ » pour être reconnus, par exemple « qml_ja_JP.qm ».
Remarque : pour placer les fichiers de traduction de manière relative par rapport au fichier QML principal, il faut ajouter un RESOURCE_PREFIX à l’appel qt_add_translations correspondant. Celui-ci doit inclure le préfixe de ressource du module Qml du fichier principal (/qt/qml par défaut) et l’URI du module. Par exemple, pour fournir des fichiers de traduction pour un module appelé « Translated » :
qt_add_translations(App
RESOURCE_PREFIX /qt/qml/Translated/i18n
TS_FILE_BASE qml
TS_FILE_DIR i18n
)Documentation des fonctions membres
QQmlApplicationEngine::QQmlApplicationEngine(QObject *parent = nullptr)
Créez un nouvel objet `QQmlApplicationEngine` avec l'parent` fournie. Vous devrez ensuite appeler la méthode ` load()` pour charger un fichier QML.
QQmlApplicationEngine::QQmlApplicationEngine(const QString &filePath, QObject *parent = nullptr)
Crée un nouvel objet `QQmlApplicationEngine` et charge le fichier QML situé à l'filePath indiquée, qui doit être un fichier local ou un chemin qrc. Si un chemin relatif est fourni, il sera interprété comme relatif au répertoire de travail de l'application.
Cette fonctionnalité est fournie à titre de commodité et revient à utiliser le constructeur vide puis à appeler la méthode `load` par la suite.
QQmlApplicationEngine::QQmlApplicationEngine(const QUrl &url, QObject *parent = nullptr)
Crée un nouvel objet `QQmlApplicationEngine` et charge le fichier QML à l'url indiquée. Cette fonctionnalité est fournie à titre de commodité et revient au même que d'utiliser le constructeur vide puis d'appeler la méthode `load` par la suite.
[explicit, since 6.5] QQmlApplicationEngine::QQmlApplicationEngine(QAnyStringView uri, QAnyStringView typeName, QObject *parent = nullptr)
Crée un nouvel objet `QQmlApplicationEngine` et charge le type QML spécifié par ` uri ` et ` typeName `. Cette fonctionnalité est fournie à titre de commodité et revient à utiliser le constructeur vide puis à appeler ` loadFromModule `.
Cette fonction a été introduite dans Qt 6.5.
[override virtual noexcept] QQmlApplicationEngine::~QQmlApplicationEngine()
Supprime l'QQmlApplicationEngine e et tous les objets QML qu'il a chargés.
[slot] void QQmlApplicationEngine::load(const QString &filePath)
Charge le fichier QML racine situé à l'adresse filePath. filePath doit être un chemin d'accès à un fichier local ou à un fichier du système de ressources. Si filePath est un chemin relatif, il est considéré comme relatif au répertoire de travail de l'application. L'arborescence d'objets définie par le fichier est instanciée immédiatement.
En cas d’erreur, des messages d’erreur sont affichés à l’aide de ` qWarning`.
Remarque : ce slot est surchargé. Pour vous connecter à ce slot :
// Connect using qOverload:
connect(sender, &SenderClass::signal,
qmlApplicationEngine, qOverload(&QQmlApplicationEngine::load));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
qmlApplicationEngine, [receiver = qmlApplicationEngine](const QString &filePath) { receiver->load(filePath); }); [slot] void QQmlApplicationEngine::load(const QUrl &url)
Charge le fichier QML racine situé à l'adresse url. L'arborescence d'objets définie par le fichier est créée immédiatement pour les URL de fichiers locaux. Les URL distantes sont chargées de manière asynchrone ; surveillez le signal « objectCreated » pour déterminer quand l'arborescence d'objets est prête.
En cas d’erreur, le signal ` objectCreated ` est émis avec un pointeur nul comme paramètre et les messages d’erreur sont affichés via ` qWarning`.
Remarque : ce slot est surchargé. Pour vous connecter à ce slot :
// Connect using qOverload:
connect(sender, &SenderClass::signal,
qmlApplicationEngine, qOverload(&QQmlApplicationEngine::load));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
qmlApplicationEngine, [receiver = qmlApplicationEngine](const QUrl &url) { receiver->load(url); }); [slot] void QQmlApplicationEngine::loadData(const QByteArray &data, const QUrl &url = QUrl())
Charge le code QML indiqué à l'adresse data. L'arborescence d'objets définie par data est instanciée immédiatement.
Si une URL url est spécifiée, elle est utilisée comme URL de base du composant. Cela affecte les chemins relatifs au sein des données et des messages d'erreur.
En cas d’erreur, les messages d’erreur sont affichés en utilisant qWarning.
[slot, since 6.5] void QQmlApplicationEngine::loadFromModule(QAnyStringView uri, QAnyStringView typeName)
Charge le type QML typeName à partir du module spécifié par uri. Si le type provient d’un fichier QML situé à une URL distante, il sera chargé de manière asynchrone. Écoutez le signal objectCreated pour déterminer quand l’arborescence d’objets est prête.
En cas d’erreur, le signal ` objectCreated ` est émis avec un pointeur nul comme paramètre et des messages d’erreur sont affichés via ` qWarning`.
QQmlApplicationEngine engine;
engine.loadFromModule("QtQuick", "Rectangle");Remarque : le module identifié par uri est recherché dans le chemin d’importation, de la même manière que si vous utilisiez import uri à l’intérieur d’un fichier QML. Si le module ne peut y être localisé, cette fonction échouera.
Cette fonction a été introduite dans Qt 6.5.
Voir également QQmlComponent::loadFromModule.
[signal] void QQmlApplicationEngine::objectCreated(QObject *object, const QUrl &url)
Ce signal est émis lorsqu'un objet a fini de se charger. Si le chargement s'est déroulé avec succès, ` object ` contient un pointeur vers l'objet chargé ; dans le cas contraire, le pointeur est `NULL`.
L'url pointant vers le composant d'où provient l'object est également fourni.
Remarque : si le chemin d’accès au composant a été fourni sous la forme d’une QString contenant un chemin relatif, l’ url contiendra un chemin d’accès complet au fichier.
[signal, since 6.4] void QQmlApplicationEngine::objectCreationFailed(const QUrl &url)
Ce signal est émis lorsque le chargement s'achève en raison d'une erreur.
L'url e du composant dont le chargement a échoué est fourni en tant qu'argument.
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
// exit on error
QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,
&app, []() { QCoreApplication::exit(-1); }, Qt::QueuedConnection);
engine.load(QUrl());
return app.exec();Remarque : si le chemin d’accès au composant a été fourni sous la forme d’un objet ` QString ` contenant un chemin relatif, l’ url contiendra un chemin d’accès au fichier entièrement résolu.
Voir également QQmlApplicationEngine::objectCreated, qui sera émis en plus de ce signal (même si la création a échoué).
Cette fonction a été introduite dans Qt 6.4.
QList<QObject *> QQmlApplicationEngine::rootObjects() const
Renvoie une liste de tous les objets racine instanciés par ` QQmlApplicationEngine`. Cette liste ne contiendra que les objets chargés via ` load()` ou un constructeur de commodité.
Remarque : dans les versions de Qt antérieures à la version 5.9, cette fonction est marquée comme non-const.
[slot, since 6.0] void QQmlApplicationEngine::setExtraFileSelectors(const QStringList &extraFileSelectors)
Définit les paramètres « extraFileSelectors » à transmettre à l'QQmlFileSelector interne utilisé pour la résolution des URL vers des fichiers locaux. Ces paramètres « extraFileSelectors » sont appliqués lors du chargement du premier fichier QML. Les définir par la suite n'a aucun effet.
Cette fonction a été introduite dans Qt 6.0.
Voir également QQmlFileSelector et QFileSelector::setExtraSelectors.
[slot] void QQmlApplicationEngine::setInitialProperties(const QVariantMap &initialProperties)
Définit l'initialProperties e avec laquelle le composant QML est initialisé après son chargement.
QQmlApplicationEngine engine;
EventDatabase eventDatabase;
EventMonitor eventMonitor;
engine.setInitialProperties({
{ "eventDatabase", QVariant::fromValue(&eventDatabase) },
{ "eventMonitor", QVariant::fromValue(&eventMonitor) }
});Voir également QQmlComponent::setInitialProperties, QQmlApplicationEngine::load et QQmlApplicationEngine::loadData.
© 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.