Types de valeurs QML
QML prend en charge les types de valeur intégrés et personnalisés.
Un type de valeur est un type qui est conceptuellement transmis par valeur plutôt que par référence, tel qu'un int ou un string. Cela contraste avec les types d'objets QML. Les types d'objets sont transmis par référence. Si vous affectez une instance d'un type d'objet à deux propriétés différentes, les deux propriétés portent la même valeur. La modification de l'objet se reflète dans les deux propriétés. Si vous affectez une instance d'un type de valeur à deux propriétés différentes, les propriétés portent des valeurs distinctes. Si vous modifiez l'une d'entre elles, l'autre reste inchangée. Les types de valeur ne sont transmis que conceptuellement par la valeur, car il doit être possible d'interagir avec eux comme s'il s'agissait d'objets JavaScript. Pour faciliter cette opération, ils sont en réalité transmis en tant que références de type de valeur lorsque vous y accédez à partir du code JavaScript.
Contrairement à un type d'objet, un type de valeur ne peut pas être utilisé pour déclarer des objets QML : il n'est pas possible, par exemple, de déclarer un objet int{} ou un objet size{}.
Les types de valeurs peuvent être utilisés pour faire référence à
- une valeur unique (par exemple, int fait référence à un seul nombre)
- Une valeur qui contient des propriétés et des méthodes (par exemple, size fait référence à une valeur avec des propriétés
widthetheight). - Le type générique var. Il peut contenir des valeurs de n'importe quel autre type mais est lui-même un type de valeur.
Lorsqu'une variable ou une propriété contient un type de valeur et qu'elle est assignée à une autre variable ou propriété, une copie de la valeur est effectuée.
Types de valeurs disponibles
Certains types de valeurs sont pris en charge par le moteur par défaut et ne nécessitent pas d'instruction d'importation pour être utilisés, tandis que d'autres nécessitent que le client importe le module qui les fournit. Tous les types de valeur énumérés ci-dessous peuvent être utilisés en tant que type property dans un document QML, à l'exception des types suivants :
void, qui marque l'absence d'une valeurlistdoit être utilisé en conjonction avec un objet ou un type de valeur en tant qu'élément.
Types de valeurs intégrés fournis par le langage QML
Les types de valeurs intégrés pris en charge nativement par le langage QML sont énumérés ci-dessous :
Valeur binaire vrai/faux | |
Valeur de date | |
Nombre avec un point décimal, stocké en double précision | |
Nombre entier, par exemple 0, 10 ou -20 | |
Liste des objets QML | |
Nombre avec un point décimal | |
Chaîne de texte libre | |
Localisateur de ressources | |
Type de propriété générique | |
Type de propriété générique | |
Type de valeur vide |
Types de valeurs fournis par les modules QML
Les modules QML peuvent étendre le langage QML avec d'autres types de valeurs.
Par exemple, les types de valeur fournis par le module QtQml sont les suivants :
Valeur représentant une courbe d'assouplissement | |
Valeur avec attributs x et y | |
Valeur avec attributs x, y, largeur et hauteur | |
Valeur avec attributs de largeur et de hauteur |
Les types de valeurs fournis par le module QtQuick sont les suivants :
une valeur de couleur ARGB | |
Valeur de police avec les propriétés de QFont. Le type de police fait référence à une valeur de police ayant les propriétés de QFont. | |
Un type matrix4x4 est une matrice à 4 rangées et 4 colonnes. | |
Un type quaternion possède des attributs scalaires, x, y et z. | |
Un type vector2d possède des attributs x et y | |
Valeur avec attributs x, y et z | |
Le type vector4d possède des attributs x, y, z et w. |
L'objet global Qt fournit useful functions pour manipuler les valeurs des types de valeurs pour les types Qt Qml et Qt Quick pour manipuler les valeurs des types de valeurs.
Les autres modules Qt documenteront leurs types de valeurs sur leurs pages de module respectives.
Vous pouvez définir vos propres types de valeurs comme décrit dans Définir des types QML à partir de C++. Pour utiliser les types fournis par un module QML particulier, les clients doivent importer ce module dans leurs documents QML.
Comportement de changement de propriété pour les types de valeur
Certains types de valeurs ont des propriétés : par exemple, le type font a des propriétés pixelSize, family et bold. Contrairement aux propriétés des types d'objets, les propriétés des types de valeurs ne fournissent pas leurs propres signaux de changement de propriété. Il n'est possible de créer un gestionnaire de signal de changement de propriété que pour la propriété de type valeur elle-même :
Text {
// invalid!
onFont.pixelSizeChanged: doSomething()
// also invalid!
font {
onPixelSizeChanged: doSomething()
}
// but this is ok
onFontChanged: doSomething()
}Sachez toutefois qu'un signal de changement de propriété pour un type de valeur est émis chaque fois que l'un de ses attributs a changé, ainsi que lorsque la propriété elle-même change. Prenons l'exemple du code suivant :
Text { onFontChanged: console.log("font changed") Text { id: otherText } focus: true // changing any of the font attributes, or reassigning the property // to a different font value, will invoke the onFontChanged handler Keys.onDigit1Pressed: font.pixelSize += 1 Keys.onDigit2Pressed: font.b = !font.b Keys.onDigit3Pressed: font = otherText.font }
En revanche, les propriétés d'un type d'objet émettent leurs propres signaux de changement de propriété, et un gestionnaire de signal de changement de propriété pour une propriété de type objet n'est invoqué que lorsque la propriété est réaffectée à une valeur d'objet différente.
Voir aussi Le système de types 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.