QBindable Class
template <typename T> class QBindableQBindable est une classe enveloppante autour des propriétés pouvant être liées. Elle permet d'effectuer des opérations sûres tout en faisant abstraction des différences entre les diverses classes de propriétés. Plus d'informations...
| En-tête : | #include <QBindable> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite : | QUntypedBindable |
Fonctions publiques
(since 6.5) | QBindable(QObject *obj, const QMetaProperty &property) |
(since 6.5) | QBindable(QObject *obj, const char *property) |
| QPropertyBinding<T> | binding() const |
| QPropertyBinding<T> | makeBinding(const QPropertyBindingSourceLocation &location = QT_PROPERTY_DEFAULT_BINDING_LOCATION) const |
| QPropertyBinding<T> | setBinding(const QPropertyBinding<T> &binding) |
| QPropertyBinding<T> | setBinding(Functor f) |
| void | setValue(const T &value) |
| QPropertyBinding<T> | takeBinding() |
| T | value() const |
Description détaillée
QBindable<T> permet d'intégrer le site Q_PROPERTY traditionnel de Qt Help avec les propriétés à liaison. Si une propriété est soutenue par un QProperty, QObjectBindableProperty ou QObjectComputedProperty, vous pouvez ajouter BINDABLE bindablePropertyName à la déclaration Q_PROPERTY, où bindablePropertyName est une fonction renvoyant une instance de QBindable construite à partir de QProperty. Le QBindable renvoyé permet aux utilisateurs de la propriété de définir et d'interroger les liaisons de la propriété, sans avoir à connaître le type exact de la propriété activée par liaison utilisée.
class MyClass : public QObject { Q_OBJECT Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged BINDABLE bindableX)public: int x() const { return xProp ; } void setX(int x) { xProp = x ; } QBindable<int> bindableX() { return QBindable<int>(&xProp) ; }signals: void xChanged() ;private: // Déclare l'instance des données de la propriété liante.Q_OBJECT_BINDABLE_PROPERTY(MyClass, int, xProp, &MyClass::xChanged) } ; MyClass *myObject;QBindable<int> bindableX = myObject->bindableX() ;qDebug() << bindableX.hasBinding(); // prints false QProperty<int> y {42}; bindableX.setBinding([&](){ return 2*y.value() ; }) ;qDebug() << bindableX.hasBinding() << myObject->x(); // prints true 84
Voir aussi QMetaProperty::isBindable, QProperty, QObjectBindableProperty, QObjectComputedProperty, et Qt Bindable Properties.
Documentation sur les fonctions membres
[explicit, since 6.5] QBindable::QBindable(QObject *obj, const QMetaProperty &property)
Voir QBindable::QBindable(QObject *obj, const char *property)
Cette fonction a été introduite dans Qt 6.5.
[explicit, since 6.5] QBindable::QBindable(QObject *obj, const char *property)
Construit un QBindable pour la propriété Q_PROPERTY property sur obj. La propriété doit avoir un signal notify mais n'a pas besoin d'avoir BINDABLE dans sa définition Q_PROPERTY, de sorte que même les Q_PROPERTYnon conscients de la liaison peuvent être liés ou utilisés dans des expressions de liaison. Vous devez utiliser QBindable::value() dans les expressions de liaison au lieu de la fonction normale de la propriété READ (ou MEMBER) pour permettre le suivi des dépendances si la propriété n'est pas BINDABLE. Lors de la liaison à l'aide d'une lambda, vous pouvez préférer capturer le QBindable par valeur pour éviter le coût de l'appel à ce constructeur dans l'expression de liaison. Ce constructeur ne doit pas être utilisé pour implémenter BINDABLE pour un Q_PROPERTY, car le Q_PROPERTY résultant ne prendra pas en charge le suivi des dépendances. Pour créer une propriété utilisable directement sans passer par un QBindable, utilisez QProperty ou QObjectBindableProperty.
QProperty<QString> displayText; QDateTimeEdit *dateTimeEdit = findDateTimeEdit(); QBindable<QDateTime> dateTimeBindable(dateTimeEdit, "dateTime"); displayText.setBinding([dateTimeBindable](){ return dateTimeBindable.value().toString(); });
Cette fonction a été introduite dans Qt 6.5.
Voir aussi QProperty, QObjectBindableProperty, et Qt Bindable Properties.
QPropertyBinding<T> QBindable::binding() const
Renvoie la liaison actuellement définie pour la propriété sous-jacente. Si la propriété n'a pas de liaison, l'adresse QPropertyBinding<T> renvoyée sera invalide.
Voir également setBinding et hasBinding.
QPropertyBinding<T> QBindable::makeBinding(const QPropertyBindingSourceLocation &location = QT_PROPERTY_DEFAULT_BINDING_LOCATION) const
Construit une liaison évaluant la valeur de la propriété sous-jacente, en utilisant une source spécifiée location.
QPropertyBinding<T> QBindable::setBinding(const QPropertyBinding<T> &binding)
Définit la liaison de la propriété sous-jacente à binding. Ne fait rien si l'adresse QBindable est en lecture seule ou invalide.
Voir aussi binding, isReadOnly(), et isValid().
template <typename Functor> QPropertyBinding<T> QBindable::setBinding(Functor f)
Crée un QPropertyBinding<T> à partir de f, et le définit comme la liaison de la propriété sous-jacente.
Il s'agit d'une fonction surchargée.
void QBindable::setValue(const T &value)
Définit la valeur de la propriété sous-jacente à value, ce qui supprime tout lien actuellement défini. Cette fonction n'a aucun effet si la propriété QBindable est en lecture seule ou invalide.
Voir aussi value(), isValid(), isReadOnly() et setBinding().
QPropertyBinding<T> QBindable::takeBinding()
Supprime la liaison actuellement définie pour la propriété sous-jacente et la renvoie. Si la propriété n'a pas de liaison, l'adresse QPropertyBinding<T> renvoyée sera invalide.
Voir également binding, setBinding, et hasBinding.
T QBindable::value() const
Renvoie la valeur actuelle de la propriété sous-jacente. Si l'adresse QBindable n'est pas valide, une adresse T construite par défaut est renvoyée.
© 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.