Sur cette page

Le système de types QML

Les types qui peuvent être utilisés dans la définition d'une hiérarchie d'objets dans un document QML peuvent provenir de différentes sources. Ils peuvent être

  • fournis nativement par le langage QML
  • enregistrés via C++ par les modules QML
  • fournies en tant que documents QML par des modules QML

En outre, les développeurs d'applications peuvent fournir leurs propres types, soit en enregistrant directement des types C++, soit en définissant des composants réutilisables dans des documents QML qui peuvent ensuite être importés.

Quelle que soit l'origine des définitions de type, le moteur appliquera la sécurité de type pour les propriétés et les instances de ces types.

Types d'objets QML

Un type d'objet QML est un type à partir duquel un objet QML peut être instancié. Les types d'objets QML sont dérivés de QtObject et sont fournis par les modules QML. Les applications peuvent importer ces modules pour utiliser les types d'objets qu'ils fournissent. Le module QtQuick fournit les types d'objets les plus courants nécessaires pour créer des interfaces utilisateur en QML.

Enfin, chaque document QML définit implicitement un type d'objet QML, qui peut être réutilisé dans d'autres documents QML. Voir la documentation sur les types d'objets dans le système de types QML pour des informations détaillées sur les types d'objets.

Types de valeurs QML

Le langage QML dispose d'une prise en charge intégrée de divers types primitifs, notamment les entiers, les nombres à virgule flottante à double précision, les chaînes de caractères et les valeurs booléennes. Les objets peuvent avoir des propriétés de ces types, et les valeurs de ces types peuvent être transmises comme arguments aux méthodes des objets.

Voir la documentation sur les types de valeurs QML pour plus d'informations sur les types de valeurs.

Types de séquence QML

Les types de séquence peuvent être utilisés pour stocker des séquences de valeurs ou d'objets.

Voir la documentation sur les types de séquence dans le système de types QML pour des informations détaillées sur les types de séquence.

Les énumérations

Les énumérations sont traitées comme des propriétés spéciales des types en QML.

Voir la documentation sur les énumérations QML pour des informations détaillées sur les énumérations.

Types singleton

QML prend en charge les types singleton, qui permettent de définir un type dont il n'existe qu'une seule instance dans chaque moteur QML. Les types singleton sont utiles pour fournir un état ou une fonctionnalité à l'échelle de l'application.

Voir Singletons en QML pour plus de détails.

Types attachés

Les propriétés attachées et les gestionnaires de signaux permettent aux types de fournir des propriétés et des signaux supplémentaires qui peuvent être attachés à d'autres objets. Il s'agit d'un mécanisme puissant permettant d'ajouter des informations contextuelles aux objets QML.

Voir QML Attached Types pour plus de détails.

Espaces de noms QML

Les espaces de noms QML peuvent être utilisés pour exposer des énumérations à partir d'espaces de noms C++.

Voir la documentation sur les espaces de noms dans le système de types QML pour des informations détaillées sur les espaces de noms.

Types JavaScript

Les objets et les tableaux JavaScript sont pris en charge par le moteur QML. Tout type JavaScript standard peut être créé et stocké à l'aide du type générique var.

Par exemple, les types standard Date et Array sont disponibles, comme indiqué ci-dessous :

import QtQuick

Item {
    property var theArray: []
    property var theDate: new Date()

    Component.onCompleted: {
        for (var i = 0; i < 10; i++)
            theArray.push("Item " + i)
        console.log("There are", theArray.length, "items in the array")
        console.log("The time is", theDate.toUTCString())
    }
}

Voir les expressions JavaScript dans les documents QML pour plus de détails.

Intégration du C++

Conversion des types de données entre QML et C++

Lors de l'intégration de QML avec C++, il est souvent nécessaire de transférer des données entre les deux environnements. Le moteur QML assure la conversion automatique entre les types QML et C++ pour les types de données courants, tandis que les types personnalisés nécessitent un enregistrement explicite.

Pour plus de détails, voir Conversion des types de données entre QML et C++.

Interaction avec les objets QML à partir de C++

Le code C++ peut accéder aux objets QML et les manipuler en obtenant des références à ces objets auprès du moteur QML. Cela permet au code C++ de lire et d'écrire des propriétés, d'invoquer des méthodes et de se connecter à des signaux sur les objets QML.

Pour plus de détails, voir Interagir avec des objets QML à partir de C++.

Intégration de valeurs JavaScript à partir de C++

Le moteur QML représente les valeurs JavaScript à l'aide de QJSValue et des classes associées, ce qui permet au code C++ de travailler avec des objets, des fonctions et des valeurs primitives JavaScript. Cela permet une intégration transparente entre les codes C++ et JavaScript.

Pour plus de détails, voir Intégrer des valeurs JavaScript à partir de C++.

Intégration d'objets C++ dans QML avec des propriétés de contexte

Les propriétés de contexte doivent être évitées. Voir Intégrer des objets C++ dans QML avec des propriétés de contexte pour plus de détails.

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