Sur cette page

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 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 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 valeur
  • list doit ê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 :

bool

Valeur binaire vrai/faux

date

Valeur de date

double

Nombre avec un point décimal, stocké en double précision

int

Nombre entier, par exemple 0, 10 ou -20

list

Liste des objets QML

real

Nombre avec un point décimal

string

Chaîne de texte libre

url

Localisateur de ressources

var

Type de propriété générique

variant

Type de propriété générique

void

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 :

easingCurve

Valeur représentant une courbe d'assouplissement

point

Valeur avec attributs x et y

rect

Valeur avec attributs x, y, largeur et hauteur

size

Valeur avec attributs de largeur et de hauteur

Les types de valeurs fournis par le module QtQuick sont les suivants :

color

une valeur de couleur ARGB

font

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.

matrix4x4

Un type matrix4x4 est une matrice à 4 rangées et 4 colonnes.

quaternion

Un type quaternion possède des attributs scalaires, x, y et z.

vector2d

Un type vector2d possède des attributs x et y

vector3d

Valeur avec attributs x, y et z

vector4d

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.