Sur cette page

QProperty Class

template <typename T> class QProperty

La classe `QProperty` est une classe de modèle qui permet la liaison automatique des propriétés. En savoir plus...

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 de : QPropertyData

Comparaisons de propriétés QProperty

CatégorieTypes comparables
égalitéQProperty
égalité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 est une classe de modèle dont le paramètre de modèle T spécifie le type de la valeur de la propriété.

QProperty<T> est l’une des classes implémentant 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 de T. Vous pouvez également lier la propriété à une expression qui calcule la valeur de manière dynamique, appelée « expression de liaison ». Elle est représentée sous la forme d’un lambda C++ et peut être utilisée pour exprimer des relations entre différentes propriétés de votre application.

Remarque : pour le QML, il est important d’exposer la méthode ` QProperty ` dans ` Q_PROPERTY ` à l’aide du mot-clé `BINDABLE`. Ainsi, le moteur QML l’utilise comme interface liable pour configurer la liaison de la propriété. La liaison peut alors interagir avec le C++ via l’API standard : QProperty<T>::onValueChanged, QProperty::takeBinding et QBindable::hasBinding. Si la propriété est de type BINDABLE, le moteur utilisera le suivi des modifications inhérent au système de propriétés C++ pour être informé des changements, sans s’appuyer sur l’émission de signaux.

Documentation des fonctions membres

[default] QProperty::QProperty()

Crée une propriété avec une instance de type T construite par défaut.

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

Crée une propriété liée à l'expression de liaison fournie f. La valeur de la propriété est définie sur le résultat de l'évaluation de cette nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, celle-ci est réévaluée et la valeur de la propriété est mise à jour en conséquence.

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

Move : crée une propriété à partir de l'initialValue fournie.

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

Crée une propriété liée à l'expression de liaison fournie ( binding ). La valeur de la propriété est définie sur le résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, celle-ci est réévaluée et la valeur de la propriété est mise à jour en conséquence.

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

Crée une propriété à partir de l'initialValue fournie.

[default] QProperty::~QProperty()

Détruit le bien.

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

Enregistre le foncteur spécifié f en tant que fonction de rappel appelée chaque fois que la valeur de la propriété change.

La fonction de rappel f doit être d'un type disposant d'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 dotée d'un opérateur d'appel.

L’objet gestionnaire de changement de propriété renvoyé assure le suivi de l’abonnement. Lorsqu’il sort de la portée, la fonction de rappel est désabonnée.

Cette méthode est dans certains cas plus facile à utiliser qu'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 également ` onValueChanged()` et ` subscribe()`.

QPropertyBinding<T> QProperty::binding() const

Renvoie l'expression de liaison associée à cette propriété. Si aucune association de ce type n'existe, un objet QPropertyBinding<T> instancié par défaut sera renvoyé.

Voir également setBinding().

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

Enregistre le foncteur donné f en tant que fonction de rappel qui sera appelée chaque fois que la valeur de la propriété changera. À chaque changement de valeur, la fonction de rappel est soit appelée immédiatement, soit différée, selon le contexte.

La fonction de rappel f doit être d'un type disposant d'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 dotée d'un opérateur d'appel.

L’objet gestionnaire de modification de propriété renvoyé assure le suivi de l’enregistrement. Lorsqu’il sort de la portée, la fonction de rappel est désenregistrée.

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 définie sur le résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, celle-ci est réévaluée et la valeur de la propriété est mise à jour en conséquence.

Voir également 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 définie sur le résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, celle-ci 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 également Formulation d'une liaison de propriété.

bool QProperty::setBinding(const QUntypedPropertyBinding &newBinding)

Associe la valeur de cette propriété à l'expression de liaison fournie ( newBinding ). La valeur de la propriété est définie sur le résultat de l'évaluation de la nouvelle liaison. Chaque fois qu'une dépendance de la liaison change, celle-ci est réévaluée et la valeur de la propriété est mise à jour en conséquence.

Renvoie `true` si le type de cette propriété est identique au type renvoyé par la fonction de liaison ; `false` dans le cas contraire.

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

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

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

Attribue la valeur « newValue » à cette propriété et supprime la liaison associée à celle-ci, le cas échéant.

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

Enregistre le functor donné f en tant que callback qui est appelé immédiatement et chaque fois que la valeur de la propriété change par la suite. À chaque changement de valeur, le gestionnaire est soit appelé immédiatement, soit différé, selon le contexte.

La fonction de rappel f doit être d’un type pouvant être copié et disposer d’un simple opérateur d’appel () sans aucun paramètre. Cela signifie que vous pouvez fournir une expression lambda C++, une std::function ou même une structure personnalisée dotée d’un opérateur d’appel.

L’objet gestionnaire de changement de propriété renvoyé assure le suivi de l’abonnement. Lorsqu’il sort de la portée, 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é. Il se peut qu'une expression de liaison associée à cette propriété soit évaluée avant que la valeur ne soit renvoyée.

Voir également setValue().

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

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

Attribue la valeur « newValue » à cette propriété et renvoie une référence à cette valeur « QProperty ».

Éléments non membres associés

[since 6.2] void beginPropertyUpdateGroup()

Marque le début d'un groupe de mise à jour de propriétés. Au sein de ce groupe, la modification d'une propriété n'entraîne ni la mise à jour immédiate des propriétés dépendantes, ni le déclenchement de notifications de modification. Celles-ci sont en effet différées jusqu'à ce que le groupe soit clôturé par un appel à la méthode ` endPropertyUpdateGroup`.

Les groupes peuvent être imbriqués. Dans ce cas, le report ne prend fin qu’une fois que le groupe le plus externe a été clôturé.

Remarque : les notificationsde modification ne sont envoyées qu’une fois que toutes les valeurs de propriétés concernées par le groupe ont été mises à jour avec leurs nouvelles valeurs. Cela permet de rétablir une invariance de classe lorsque plusieurs propriétés doivent être mises à jour, empêchant ainsi tout observateur externe de détecter un état incohérent.

Cette fonction a été introduite dans Qt 6.2.

Voir également Qt::endPropertyUpdateGroup et QScopedPropertyUpdateGroup.

[since 6.2] void endPropertyUpdateGroup()

Met fin à un groupe de mise à jour de propriétés. Si le groupe le plus externe a été clôturé, les évaluations de liaison différées et les notifications ont alors lieu.

Avertissement : l'appel de la fonction `endPropertyUpdateGroup` sans appel préalable à ` beginPropertyUpdateGroup ` entraîne un comportement indéfini.

Cette fonction a été introduite dans Qt 6.2.

Voir également 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.