Types de valeurs QML
QML prend en charge les types de valeurs intégrés et personnalisés.
Un type de valeur est un type qui, d’un point de vue conceptuel, est transmis par valeur plutôt que par référence, comme par exemple 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 attribuez une instance d’un type d’objet à deux propriétés différentes, ces deux propriétés prennent la même valeur. Toute modification apportée à l’objet se répercute sur les deux propriétés. Si vous attribuez une instance d’un type de valeur à deux propriétés différentes, celles-ci prennent des valeurs distinctes. Si vous modifiez l’une d’entre elles, l’autre reste inchangée. Les types de valeur ne sont transmis par valeur que d’un point de vue conceptuel, car il doit rester possible d’interagir avec eux comme s’il s’agissait d’objets JavaScript. Pour faciliter cela, ils sont en réalité transmis sous forme de références de type de valeur lorsque vous y accédez depuis du code JavaScript.
Contrairement à un type 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 valeur peuvent être utilisés pour faire référence à :
- Une valeur unique (par exemple, ` int ` fait référence à un nombre unique)
- Une valeur contenant des propriétés et des méthodes (par exemple, ` size ` fait référence à une valeur dotée des propriétés `
width` et `height`) - 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 alors créée.
Types de valeurs disponibles
Certains types de valeur sont pris en charge par défaut par le moteur et ne nécessitent pas de déclaration d’importation pour être utilisés, tandis que d’autres exigent que le client importe le module qui les fournit. Tous les types de valeur répertoriés ci-dessous peuvent être utilisés comme type « property » dans un document QML, à l’exception des suivants :
void, qui indique l’absence de valeurlistdoit être utilisé en association 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 répertoriés ci-dessous :
Valeur binaire vrai/faux | |
Valeur de date | |
Nombre à virgule flottante, stocké en double précision | |
Nombre entier, par exemple 0, 10 ou -20 | |
Liste d'objets QML | |
Nombre à virgule décimale | |
Chaîne de texte au format libre | |
Localisateur de ressource | |
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 davantage de types de valeurs.
Par exemple, les types de valeur fournis par le module QtQml sont les suivants :
Valeur représentant une courbe d’accélération | |
Valeur avec des attributs x et y | |
Valeur faisant référence à une propriété d’un objet | |
Valeur dotée d’attributs x, y, width et height | |
Valeur comportant les attributs « width » et « height » |
Les types de valeurs fournis par le module « QtQuick » sont les suivants :
Une valeur de couleur ARGB | |
Une valeur de police présentant les propriétés de QFont. Le type « font » désigne une valeur de police présentant les propriétés de QFont | |
Un type « matrix4x4 » correspond à une matrice de 4 lignes et 4 colonnes | |
Un type quaternion possède les attributs scalaire, x, y et z | |
Un type « vector2d » possède les attributs x et y | |
Valeur comportant des attributs x, y et z | |
Un type « vector4d » possède les attributs x, y, z et w |
L'objet global ` Qt ` fournit une interface ` useful functions ` permettant de manipuler les valeurs des types de valeur pour le Qt Qml et Qt Quick modules.
Les autres modules Qt documenteront leurs types de valeur sur leurs pages respectives.
Vous pouvez définir vos propres types de valeurs comme décrit dans la section « Définition de types QML depuis C++ ». Pour utiliser les types fournis par un module QML particulier, les clients doivent importer ce module dans leurs documents QML.
Comportement en cas de modification de propriété pour les types de valeur
Certains types de valeur possèdent des propriétés : par exemple, le type ` font ` dispose des propriétés ` pixelSize`, ` family ` et ` bold `. Contrairement aux propriétés des types d’objets, celles des types de valeur ne génèrent pas leurs propres signaux de changement de propriété. Il est uniquement possible de créer un gestionnaire de signal de changement de propriété pour la propriété du type de valeur elle-même :
Text {
// invalid!
onFont.pixelSizeChanged: doSomething()
// also invalid!
font {
onPixelSizeChanged: doSomething()
}
// but this is ok
onFontChanged: doSomething()
}Il faut toutefois noter qu’un signal de modification de propriété pour un type de valeur est émis dès qu’un de ses attributs change, 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 objet émettent leurs propres signaux de modification de propriété, et un gestionnaire de signal de modification de propriété pour une propriété de type objet n’est appelé que lorsque la propriété est réattribuée à une valeur objet différente.
Voir également 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.