Auf dieser Seite

QBindable Class

template <typename T> class QBindable

QBindable ist eine Wrapper-Klasse für Eigenschaften, die eine Datenbindung unterstützen. Sie ermöglicht typsichere Operationen und abstrahiert dabei die Unterschiede zwischen den verschiedenen Eigenschaftsklassen. Mehr...

Header: #include <QBindable>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QUntypedBindable

Öffentliche Funktionen

(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

Ausführliche Beschreibung

QBindable ist eine Template-Klasse, bei der der Template-Parameter „ T “ den Typ des Eigenschaftswerts angibt.

Q_PROPERTY QBindable<T> hilft dabei, die herkömmlichen Qt XML-ph-0000@deepl.internalen in Eigenschaften mit Bindungsunterstützung zu integrieren. Wenn eine Eigenschaft auf einem ` QProperty`, ` QObjectBindableProperty ` oder ` QObjectComputedProperty` basiert, können Sie ` BINDABLE bindablePropertyName` zur ` Q_PROPERTY `-Deklaration hinzufügen, wobei `bindablePropertyName` eine Funktion ist, die eine Instanz von `QBindable` zurückgibt, die aus dem ` QProperty` konstruiert wurde. Das zurückgegebene `QBindable` ermöglicht es Benutzern der Eigenschaft, Bindungen der Eigenschaft festzulegen und abzufragen, ohne die genaue Art der verwendeten bindungsfähigen Eigenschaft kennen zu müssen.

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:
    // Deklarieren Sie die Instanz der Daten der bindbaren Eigenschaft.
    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

Siehe auch „ QMetaProperty::isBindable“ , „ QProperty “, „ QObjectBindableProperty “, „ QObjectComputedProperty “ und „Qt Bindable Properties“.

Dokumentation zu Mitgliedsfunktionen

[explicit, since 6.5] QBindable::QBindable(QObject *obj, const QMetaProperty &property)

Siehe QBindable::QBindable(QObject *obj, const char *property)

Diese Funktion wurde in Qt 6.5 eingeführt.

[explicit, since 6.5] QBindable::QBindable(QObject *obj, const char *property)

Erstellt ein `QBindable` für das ` Q_PROPERTY ` ` property ` unter obj. Die Eigenschaft muss über ein `notify`-Signal verfügen, muss jedoch in ihrer ` Q_PROPERTY `-Definition nicht unbedingt ` BINDABLE ` enthalten, sodass auch ` Q_PROPERTY`s, die keine Bindungsunterstützung bieten, gebunden oder in Bindungsausdrücken verwendet werden können. Sie müssen in Bindungsausdrücken ` QBindable::value() ` anstelle der normalen Eigenschaftsfunktion ` READ ` (oder ` MEMBER`) verwenden, um die Abhängigkeitsverfolgung zu aktivieren, falls die Eigenschaft nicht ` BINDABLE` ist. Bei der Bindung mithilfe eines Lambda-Ausdrucks empfiehlt es sich möglicherweise, das `QBindable` nach Wert zu erfassen, um den Aufwand für den Aufruf dieses Konstruktors im Bindungsausdruck zu vermeiden. Dieser Konstruktor sollte nicht verwendet werden, um ` BINDABLE ` für ein ` Q_PROPERTY` zu implementieren, da das resultierende ` Q_PROPERTY ` die Abhängigkeitsverfolgung nicht unterstützt. Um eine Eigenschaft zu erstellen, die direkt verwendet werden kann, ohne über ein `QBindable` zu lesen, verwenden Sie ` QProperty ` oder ` QObjectBindableProperty`.

QProperty<QString> displayText;
QDateTimeEdit *dateTimeEdit = findDateTimeEdit();
QBindable<QDateTime> dateTimeBindable(dateTimeEdit, "dateTime");
displayText.setBinding([dateTimeBindable](){ return dateTimeBindable.value().toString(); });

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch „ QProperty “, „ QObjectBindableProperty “ und „Qt Bindable Properties“.

QPropertyBinding<T> QBindable::binding() const

Gibt die aktuell festgelegte Bindung der zugrunde liegenden Eigenschaft zurück. Verfügt die Eigenschaft über keine Bindung, ist der zurückgegebene Wert „ QPropertyBinding<T> “ ungültig.

Siehe auch setBinding und hasBinding.

QPropertyBinding<T> QBindable::makeBinding(const QPropertyBindingSourceLocation &location = QT_PROPERTY_DEFAULT_BINDING_LOCATION) const

Erstellt eine Bindung, die den Wert der zugrunde liegenden Eigenschaft auswertet, wobei ein angegebenes Quell location verwendet wird.

QPropertyBinding<T> QBindable::setBinding(const QPropertyBinding<T> &binding)

Legt die Bindung der zugrunde liegenden Eigenschaft auf „ binding “ fest. Es erfolgt keine Aktion, wenn die „ QBindable “ schreibgeschützt oder ungültig ist.

Siehe auch „ binding“ , „ isReadOnly()“ und „ isValid()“.

template <typename Functor> QPropertyBinding<T> QBindable::setBinding(Functor f)

Erstellt ein ` QPropertyBinding<T> ` aus ` f` und legt es als Bindung der zugrunde liegenden Eigenschaft fest.

Dies ist eine überladene Funktion.

void QBindable::setValue(const T &value)

Setzt den Wert der zugrunde liegenden Eigenschaft auf „ value “. Dadurch wird jede derzeit festgelegte Bindung entfernt. Diese Funktion hat keine Auswirkung, wenn die Eigenschaft „ QBindable “ schreibgeschützt oder ungültig ist.

Siehe auch „ value()“, „ isValid()“, „ isReadOnly()“ und „ setBinding()“.

QPropertyBinding<T> QBindable::takeBinding()

Entfernt die aktuell festgelegte Bindung der zugrunde liegenden Eigenschaft und gibt diese zurück. Wenn die Eigenschaft keine Bindung hat, ist der zurückgegebene Wert „ QPropertyBinding<T> “ ungültig.

Siehe auch „ binding “, „ setBinding “ und „ hasBinding “.

T QBindable::value() const

Gibt den aktuellen Wert der zugrunde liegenden Eigenschaft zurück. Ist die „ QBindable “ ungültig, wird ein standardmäßig initialisiertes „ T “ zurückgegeben.

Siehe auch „ setValue()“ und „ isValid()“.

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