Sur cette page

Le système de types QML

Les types pouvant être utilisés dans la définition d’une hiérarchie d’objets dans un document QML peuvent provenir de différentes sources. Il peut s’agir :

  • fournis nativement par le langage QML
  • enregistrés via C++ par des modules QML
  • fournis sous forme de documents QML par des modules QML

De plus, 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 types, le moteur garantira la sécurité des types 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 des 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 à la création d’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. Consultez la documentation sur les types d’objets dans le système de types QML pour obtenir des informations détaillées à ce sujet.

Types de valeurs QML

Le langage QML prend en charge nativement 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 posséder des propriétés de ces types, et des valeurs de ces types peuvent être transmises en tant qu’arguments aux méthodes des objets.

Consultez la documentation sur les types de valeurs QML pour plus d’informations sur les types de valeurs.

Types de séquences QML

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

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

Énumérations

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

Consultez la documentation sur les énumérations QML pour obtenir des informations détaillées à ce sujet.

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.

Consultez la section « Singletons en QML » pour plus de détails.

Types attachés

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

Voir « Types attachés en QML » pour plus de détails.

Espaces de noms QML

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

Consultez la documentation sur les espaces de noms dans le système de types QML pour obtenir des informations détaillées à ce sujet.

Types JavaScript

Les objets et 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 Expressions JavaScript dans les documents QML pour plus de détails.

Intégration C++

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

Lors de l’intégration de QML avec le 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.

Voir Conversion des types de données entre QML et C++ pour plus de détails.

Interaction avec les objets QML depuis le C++

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

Voir Interaction avec les objets QML depuis le C++ pour plus de détails.

Intégration avec les valeurs JavaScript depuis le C++

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

Voir Intégration avec les valeurs JavaScript depuis le C++ pour plus de détails.

Intégration d'objets C++ dans QML à l'aide de propriétés de contexte

L’utilisation des propriétés de contexte est à éviter. Voir Intégration d’objets C++ dans QML à l’aide 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.