Sur cette page

Types d'objets QML

Un type d'objet QML est un type à partir duquel un objet QML peut être instancié.

D'un point de vue syntaxique, un type d'objet QML est un type qui permet de déclarer un objet en spécifiant le nom du type suivi d'une paire d'accolades contenant les attributs de cet objet. Cela diffère des types de valeur, qui ne peuvent pas être utilisés de la même manière. Par exemple, ` Rectangle ` est un type d’objet QML : il peut être utilisé pour créer des objets de type ` Rectangle `. Cela n’est pas possible avec les types primitifs tels que ` int ` et ` bool`, qui servent à contenir des types de données simples plutôt que des objets.

Les types d'objets QML personnalisés peuvent être définis en créant un fichier .qml qui définit le type, comme expliqué dans la section « Documents en tant que définitions de types d'objets QML », ou en définissant un type QML à partir de C++ et en enregistrant ce type auprès du moteur QML, comme expliqué dans la section « Définition de types QML à partir de C++ ». Notez que dans les deux cas, le nom du type doit commencer par une majuscule pour pouvoir être déclaré en tant que type d'objet QML dans un fichier QML.

Pour plus d’informations sur le C++ et les différentes méthodes d’intégration de QML, consultez la page de présentation de l’intégration C++ et QML.

Il existe deux types d’objets intégrés pouvant être utilisés sans importer d’autres modules : ` QtObject ` est le type de base de tous les types d’objets. ` Component ` peut être utilisé pour définir de nouveaux types d’objets en ligne dans les documents QML.

Définition de types d’objets à partir de QML

Définition de types d’objets via des documents QML

Les auteurs de plugins et les développeurs d’applications peuvent fournir des types définis sous forme de documents QML. Un document QML, lorsqu’il est visible par le système d’importation QML, définit un type identifié par le nom du fichier sans ses extensions.

Ainsi, si un document QML nommé « MyButton.qml » existe, il fournit la définition du type « MyButton », qui peut être utilisé dans une application QML.

Consultez la documentation relative aux documents QML pour savoir comment définir un document QML et connaître la syntaxe du langage QML. Une fois que vous maîtrisez le langage QML et la définition des documents QML, consultez la documentation qui explique comment définir et utiliser vos propres types QML réutilisables dans des documents QML.

Consultez la section Définition de types d'objets via des documents QML pour plus d'informations.

Définition de types anonymes avec la directive `Component`

Une autre méthode pour créer des types d’objets à partir de QML consiste à utiliser le type « Component ». Cela permet de définir un type directement dans un document QML, au lieu d’utiliser un document séparé dans un fichier « .qml ».

Item {
    id: root
    width: 500; height: 500

    Component {
        id: myComponent
        Rectangle { width: 100; height: 100; color: "red" }
    }

    Component.onCompleted: {
        myComponent.createObject(root)
        myComponent.createObject(root, {"x": 200})
    }
}

Ici, l’objet ` myComponent ` définit essentiellement un type anonyme qui peut être instancié à l’aide de ` Component::createObject ` pour créer des objets de ce type anonyme.

Les composants en ligne partagent toutes les caractéristiques des composants de niveau supérieur classiques et utilisent la même liste d’ import s que le document QML qui les contient.

Notez que chaque déclaration d’objet ` Component ` crée sa propre portée de composant. Toutes les valeurs d’identifiant utilisées et référencées au sein d’une déclaration d’objet ` Component ` doivent être uniques au sein de cette portée, mais ne doivent pas nécessairement être uniques au sein du document dans lequel le composant en ligne est déclaré. Ainsi, l’ Rectangle déclaré dans la déclaration d’objet myComponent pourrait avoir un identifiant « root » sans entrer en conflit avec l’ root déclaré pour l’objet Item dans le même document, car ces deux valeurs d’identifiant sont déclarées dans des portées de composant différentes.

Voir Portée et résolution des noms pour plus de détails.

Définition de types d’objets en C++

Les auteurs de plugins C++ et les développeurs d’applications peuvent enregistrer des types définis en C++ via l’API fournie par le module Qt Qml. Il existe diverses fonctions d’enregistrement permettant chacune de répondre à différents cas d’utilisation. Pour plus d’informations sur ces fonctions d’enregistrement et sur les spécificités de l’exposition de types C++ personnalisés à QML, consultez la documentation relative à la définition de types QML à partir de C++.

Le système de types QML repose sur l’installation d’importations, de plugins et d’extensions dans un chemin d’importation connu. Les plugins peuvent être fournis par des développeurs tiers et réutilisés par les développeurs d’applications clientes. Veuillez consulter la documentation sur les modules QML pour plus d’informations sur la création et le déploiement d’un module d’extension QML.

© 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.