Sur cette page

QProperty Class

template <typename T> class QProperty

La classe QProperty est une classe modèle qui permet de lier automatiquement les propriétés. Plus d'informations...

En-tête : #include <QProperty>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Depuis : Qt 6.0
Hérite : QPropertyData

Cette classe est comparable à l 'égalité.

Cette classe est comparable à T.

Fonctions publiques

QProperty()
QProperty(Functor &&f)
QProperty(T &&initialValue)
QProperty(const QPropertyBinding<T> &binding)
QProperty(const T &initialValue)
~QProperty()
(since 6.2) QPropertyNotifier addNotifier(Functor f)
QPropertyBinding<T> binding() const
QPropertyChangeHandler<Functor> onValueChanged(Functor f)
QPropertyBinding<T> setBinding(const QPropertyBinding<T> &newBinding)
(since 6.0) QPropertyBinding<T> setBinding(Functor f)
bool setBinding(const QUntypedPropertyBinding &newBinding)
void setValue(QProperty<T>::parameter_type newValue)
void setValue(QProperty<T>::rvalue_ref newValue)
(since 6.0) QPropertyChangeHandler<Functor> subscribe(Functor f)
QPropertyBinding<T> takeBinding()
QProperty<T>::parameter_type value() const
QProperty<T> &operator=(QProperty<T>::parameter_type newValue)
QProperty<T> &operator=(QProperty<T>::rvalue_ref newValue)
(since 6.2) void beginPropertyUpdateGroup()
(since 6.2) void endPropertyUpdateGroup()

Description détaillée

QProperty<T> est l'une des classes mettant en œuvre les propriétés liables de Qt. Il s'agit d'un conteneur qui contient une instance de T. Vous pouvez lui attribuer une valeur et la lire via la fonction value() ou l'opérateur de conversion T. Vous pouvez également lier la propriété à une expression qui calcule la valeur de la propriété. Vous pouvez également lier la propriété à une expression qui calcule la valeur dynamiquement, l'expression de liaison. Elle est représentée comme une lambda C++ et peut être utilisée pour exprimer les relations entre différentes propriétés dans votre application.

Remarque : pour QML, il est important d'exposer QProperty dans Q_PROPERTY avec le mot-clé BINDABLE. Par conséquent, le moteur QML l'utilise en tant qu'interface liante pour établir la liaison de la propriété. Il est alors possible d'interagir avec la liaison en C++ par l'intermédiaire de l'API normale : QProperty<T>::onValueChanged, QProperty::takeBinding et QBindable::hasBinding Si la propriété est BINDABLE, le moteur utilisera le suivi des modifications inhérent au système de propriété C++ pour être informé des modifications, et il ne s'appuiera pas sur l'émission de signaux.

Documentation des fonctions membres

QProperty::QProperty()

Construit une propriété avec une instance de T construite par défaut.

[explicit] template <typename Functor> QProperty::QProperty(Functor &&f)

Construit une propriété liée à l'expression de liaison fournie f. La valeur de la propriété est fixée au résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, la liaison est réévaluée et la valeur de la propriété est mise à jour en conséquence.

[explicit default] QProperty::QProperty(T &&initialValue)

Move-Construit une propriété avec l'adresse initialValue.

[explicit] QProperty::QProperty(const QPropertyBinding<T> &binding)

Construit une propriété liée à l'expression binding fournie. La valeur de la propriété est fixée au résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, la liaison est réévaluée et la valeur de la propriété est mise à jour en conséquence.

[explicit default] QProperty::QProperty(const T &initialValue)

Construit une propriété avec l'adresse initialValue.

QProperty::~QProperty()

Détruit la propriété.

[since 6.2] template <typename Functor> QPropertyNotifier QProperty::addNotifier(Functor f)

Souscrit le foncteur donné f en tant que callback qui est appelé chaque fois que la valeur de la propriété change.

Le rappel f doit être un type qui possède un opérateur d'appel simple () sans aucun paramètre. Cela signifie que vous pouvez fournir une expression lambda C++, une std::function ou même une structure personnalisée avec un opérateur d'appel.

L'objet de gestion des changements de propriété renvoyé conserve la trace de l'abonnement. Lorsqu'il sort du champ d'application, le rappel est désabonné.

Cette méthode est dans certains cas plus facile à utiliser que onValueChanged(), car l'objet renvoyé n'est pas un modèle. Il peut donc être stocké plus facilement, par exemple en tant que membre d'une classe.

Cette fonction a été introduite dans Qt 6.2.

Voir aussi onValueChanged() et subscribe().

QPropertyBinding<T> QProperty::binding() const

Renvoie l'expression de liaison associée à cette propriété. Un QPropertyBinding<T> construit par défaut sera renvoyé si une telle association n'existe pas.

Voir également setBinding().

template <typename Functor> QPropertyChangeHandler<Functor> QProperty::onValueChanged(Functor f)

Enregistre le foncteur donné f en tant que rappel qui doit être appelé chaque fois que la valeur de la propriété change. À chaque changement de valeur, le gestionnaire est appelé immédiatement ou de manière différée, en fonction du contexte.

Le callback f est censé être un type qui possède un opérateur d'appel simple () sans aucun paramètre. Cela signifie que vous pouvez fournir une expression lambda C++, une std::function ou même une structure personnalisée avec un opérateur d'appel.

L'objet de gestion des changements de propriété renvoyé conserve la trace de l'enregistrement. Lorsqu'il sort du champ d'application, le rappel est désenregistré.

QPropertyBinding<T> QProperty::setBinding(const QPropertyBinding<T> &newBinding)

Associe la valeur de cette propriété à l'expression newBinding fournie et renvoie la liaison précédemment associée. La valeur de la propriété est fixée au résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, la liaison est réévaluée et la valeur de la propriété est mise à jour en conséquence.

Voir aussi binding().

[since 6.0] template <typename Functor> QPropertyBinding<T> QProperty::setBinding(Functor f)

Associe la valeur de cette propriété au foncteur fourni f et renvoie la liaison précédemment associée. La valeur de la propriété est fixée au résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, la liaison est réévaluée et la valeur de la propriété est mise à jour en conséquence.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.0.

Voir aussi Formuler une liaison de propriété.

bool QProperty::setBinding(const QUntypedPropertyBinding &newBinding)

Associe la valeur de cette propriété à l'expression newBinding fournie. La valeur de la propriété est fixée au résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, la liaison est réévaluée et la valeur de la propriété est mise à jour en conséquence.

Retourne true si le type de cette propriété est le même que le type retourné par la fonction de liaison ; false sinon.

Il s'agit d'une fonction surchargée.

void QProperty::setValue(QProperty<T>::rvalue_ref newValue)

void QProperty::setValue(QProperty<T>::parameter_type newValue)

Affecte newValue à cette propriété et supprime la liaison associée à la propriété, le cas échéant.

[since 6.0] template <typename Functor> QPropertyChangeHandler<Functor> QProperty::subscribe(Functor f)

Souscrit au foncteur donné f en tant que rappel qui est appelé immédiatement et à chaque fois que la valeur de la propriété change dans le futur. À chaque changement de valeur, le gestionnaire est appelé immédiatement ou de manière différée, en fonction du contexte.

Le callback f est censé être un type qui peut être copié et qui possède un opérateur d'appel simple() sans aucun paramètre. Cela signifie que vous pouvez fournir une expression lambda C++, une std::function ou même une structure personnalisée avec un opérateur d'appel.

L'objet de gestion des changements de propriété renvoyé conserve la trace de l'abonnement. Lorsqu'il sort du champ d'application, le rappel est désabonné.

Cette fonction a été introduite dans Qt 6.0.

QPropertyBinding<T> QProperty::takeBinding()

Dissocie l'expression de liaison de cette propriété et la renvoie. Après l'appel de cette fonction, la valeur de la propriété ne changera que si vous lui attribuez une nouvelle valeur ou si une nouvelle liaison est définie.

QProperty<T>::parameter_type QProperty::value() const

Renvoie la valeur de la propriété. Cette fonction peut évaluer une expression de liaison liée à cette propriété avant de renvoyer la valeur.

Voir aussi setValue().

QProperty<T> &QProperty::operator=(QProperty<T>::rvalue_ref newValue)

QProperty<T> &QProperty::operator=(QProperty<T>::parameter_type newValue)

Attribue newValue à cette propriété et renvoie une référence à QProperty.

Non-membres apparentés

[since 6.2] void beginPropertyUpdateGroup()

Marque le début d'un groupe de mise à jour des propriétés. Dans ce groupe, la modification d'une propriété ne met pas immédiatement à jour les propriétés dépendantes et ne déclenche pas de notifications de changement. Ces notifications sont reportées jusqu'à ce que le groupe soit terminé par un appel à endPropertyUpdateGroup.

Les groupes peuvent être imbriqués. Dans ce cas, le report ne prend fin que lorsque le groupe le plus éloigné a été fermé.

Remarque : les notifications de changement ne sont envoyées qu'une fois que toutes les valeurs des propriétés affectées par le groupe ont été mises à jour. Cela permet de rétablir un invariant de classe si plusieurs propriétés doivent être mises à jour, empêchant ainsi tout observateur externe de remarquer un état incohérent.

Cette fonction a été introduite dans Qt 6.2.

Voir aussi Qt::endPropertyUpdateGroup et QScopedPropertyUpdateGroup.

[since 6.2] void endPropertyUpdateGroup()

Met fin à un groupe de mise à jour des propriétés. Si le groupe le plus externe a été terminé, les évaluations et les notifications de liaison différée ont lieu maintenant.

Attention : L'appel à endPropertyUpdateGroup sans un appel précédent à beginPropertyUpdateGroup entraîne un comportement non défini.

Cette fonction a été introduite dans Qt 6.2.

Voir aussi Qt::beginPropertyUpdateGroup et QScopedPropertyUpdateGroup.

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