Auf dieser Seite

QProperty Class

template <typename T> class QProperty

Die Klasse „QProperty“ ist eine Template-Klasse, die automatische Eigenschaftsbindungen ermöglicht. Mehr...

Header: #include <QProperty>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Seit: Qt 6.0
Erbt von: QPropertyData

QProperty-Vergleiche

KategorieVergleichbare Typen
GleichheitQProperty
GleichheitT.

Öffentliche Funktionen

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()

Ausführliche Beschreibung

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

QProperty<T> ist eine der Klassen, die die bindbaren Eigenschaften von Qt implementieren. Es handelt sich um einen Container, der eine Instanz von T enthält. Sie können ihm einen Wert zuweisen und diesen über die Funktion ` value()` oder den Konvertierungsoperator von T auslesen. Sie können die Eigenschaft auch an einen Ausdruck binden, der den Wert dynamisch berechnet – den Bindungsausdruck. Dieser wird als C++-Lambda dargestellt und kann verwendet werden, um Beziehungen zwischen verschiedenen Eigenschaften in Ihrer Anwendung auszudrücken.

Hinweis: Für QML ist es wichtig, die Methode ` QProperty ` in ` Q_PROPERTY ` mit dem Schlüsselwort `BINDABLE` zu deklarieren. Dadurch nutzt die QML-Engine diese Methode als bindbare Schnittstelle, um die Eigenschaftsbindung einzurichten. Die Bindung kann dann wiederum über die normale API mit C++ interagieren: QProperty<T>::onValueChanged, QProperty::takeBinding und QBindable::hasBinding. Ist die Eigenschaft BINDABLE, nutzt die Engine die dem C++-Eigenschaftssystem inhärente Änderungsverfolgung, um über Änderungen benachrichtigt zu werden, und ist nicht auf die Ausgabe von Signalen angewiesen.

Dokumentation zu den Mitgliedsfunktionen

[default] QProperty::QProperty()

Erstellt eine Eigenschaft mit einer standardmäßig erstellten Instanz von T.

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

Erstellt eine Eigenschaft, die an den angegebenen Bindungsausdruck f gebunden ist. Der Wert der Eigenschaft wird auf das Ergebnis der Auswertung der neuen Bindung gesetzt. Immer wenn sich eine Abhängigkeit der Bindung ändert, wird die Bindung neu ausgewertet und der Wert der Eigenschaft entsprechend aktualisiert.

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

Move – Erstellt eine Eigenschaft mit dem angegebenen „ initialValue “.

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

Erstellt eine Eigenschaft, die an den angegebenen Ausdruck „ binding “ gebunden ist. Der Wert der Eigenschaft wird auf das Ergebnis der Auswertung der neuen Bindung gesetzt. Sobald sich eine Abhängigkeit der Bindung ändert, wird die Bindung neu ausgewertet, und der Wert der Eigenschaft wird entsprechend aktualisiert.

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

Erstellt eine Eigenschaft mit der angegebenen „ initialValue “.

[default] QProperty::~QProperty()

Zerstört das Objekt.

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

Registriert den angegebenen Funktor f als Callback, der immer dann aufgerufen wird, wenn sich der Wert der Eigenschaft ändert.

Der Callback ` f ` muss ein Typ sein, der über einen einfachen Aufrufoperator ` () ` ohne Parameter verfügt. Das bedeutet, dass Sie einen C++-Lambda-Ausdruck, eine `std::function` oder sogar eine benutzerdefinierte Struktur mit einem Aufrufoperator angeben können.

Das zurückgegebene Objekt des Eigenschaftsänderungs-Handlers verwaltet das Abonnement. Wenn es den Gültigkeitsbereich verlässt, wird das Callback abgemeldet.

Diese Methode ist in manchen Fällen einfacher zu verwenden als ` onValueChanged()`, da das zurückgegebene Objekt kein Template ist. Es lässt sich daher leichter speichern, z. B. als Mitglied einer Klasse.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch ` onValueChanged()` und ` subscribe()`.

QPropertyBinding<T> QProperty::binding() const

Gibt den Bindungsausdruck zurück, der dieser Eigenschaft zugeordnet ist. Wenn keine solche Zuordnung vorliegt, wird ein standardmäßig erstelltes `QPropertyBinding<T>` zurückgegeben.

Siehe auch ` setBinding()`.

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

Registriert den angegebenen Funktor f als Callback, der immer dann aufgerufen wird, wenn sich der Wert der Eigenschaft ändert. Bei jeder Wertänderung wird der Handler je nach Kontext entweder sofort oder verzögert aufgerufen.

Der Callback „ f “ muss ein Typ sein, der über einen einfachen Aufrufoperator „ () “ ohne Parameter verfügt. Das bedeutet, dass Sie einen C++-Lambda-Ausdruck, eine `std::function` oder sogar eine benutzerdefinierte Struktur mit einem Aufrufoperator angeben können.

Das zurückgegebene Objekt des Property-Change-Handlers verwaltet die Registrierung. Wenn es den Gültigkeitsbereich verlässt, wird der Callback abgemeldet.

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

Verknüpft den Wert dieser Eigenschaft mit dem angegebenen Ausdruck „ newBinding “ und gibt die zuvor verknüpfte Bindung zurück. Der Wert der Eigenschaft wird auf das Ergebnis der Auswertung der neuen Bindung gesetzt. Immer wenn sich eine Abhängigkeit der Bindung ändert, wird die Bindung neu ausgewertet und der Wert der Eigenschaft entsprechend aktualisiert.

Siehe auch ` binding()`.

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

Verknüpft den Wert dieser Eigenschaft mit dem angegebenen Funktor „ f “ und gibt die zuvor verknüpfte Bindung zurück. Der Wert der Eigenschaft wird auf das Ergebnis der Auswertung der neuen Bindung gesetzt. Immer wenn sich eine Abhängigkeit der Bindung ändert, wird die Bindung neu ausgewertet und der Wert der Eigenschaft entsprechend aktualisiert.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch „Formulieren einer Eigenschaftsbindung“.

bool QProperty::setBinding(const QUntypedPropertyBinding &newBinding)

Ordnet den Wert dieser Eigenschaft dem angegebenen Ausdruck „ newBinding “ zu. Der Wert der Eigenschaft wird auf das Ergebnis der Auswertung der neuen Bindung gesetzt. Immer wenn sich eine Abhängigkeit der Bindung ändert, wird die Bindung neu ausgewertet und der Wert der Eigenschaft entsprechend aktualisiert.

Gibt „true“ zurück, wenn der Typ dieser Eigenschaft mit dem Typ übereinstimmt, den die Bindungsfunktion zurückgibt; andernfalls „false“.

Dies ist eine überladene Funktion.

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

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

Weist dieser Eigenschaft den Wert „ newValue “ zu und entfernt die zugehörige Bindung der Eigenschaft, falls vorhanden.

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

Registriert den angegebenen Funktor f als Callback, der sofort und bei jeder zukünftigen Änderung des Werts der Eigenschaft aufgerufen wird. Bei jeder Wertänderung wird der Handler je nach Kontext entweder sofort oder verzögert aufgerufen.

Der Callback „ f “ muss ein kopierbarer Typ sein und über einen einfachen Aufrufoperator „()“ ohne Parameter verfügen. Das bedeutet, dass Sie einen C++-Lambda-Ausdruck, eine `std::function` oder sogar eine benutzerdefinierte Struktur mit einem Aufrufoperator angeben können.

Das zurückgegebene Objekt des Handlers für Eigenschaftsänderungen verwaltet das Abonnement. Wenn es den Gültigkeitsbereich verlässt, wird das Abonnement für den Callback aufgehoben.

Diese Funktion wurde in Qt 6.0 eingeführt.

QPropertyBinding<T> QProperty::takeBinding()

Trennt den Bindungsausdruck von dieser Eigenschaft und gibt ihn zurück. Nach dem Aufruf dieser Funktion ändert sich der Wert der Eigenschaft nur noch, wenn Sie ihr einen neuen Wert zuweisen oder wenn eine neue Bindung festgelegt wird.

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

Gibt den Wert der Eigenschaft zurück. Dabei wird möglicherweise zunächst ein an diese Eigenschaft gebundener Bindungsausdruck ausgewertet, bevor der Wert zurückgegeben wird.

Siehe auch ` setValue()`.

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

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

Weist dieser Eigenschaft „ newValue “ zu und gibt eine Referenz auf diese „ QProperty “ zurück.

Verwandte Nicht-Mitglieder

[since 6.2] void beginPropertyUpdateGroup()

Markiert den Beginn einer Eigenschaftsaktualisierungsgruppe. Innerhalb dieser Gruppe führt die Änderung einer Eigenschaft weder zu einer sofortigen Aktualisierung abhängiger Eigenschaften noch löst sie Änderungsbenachrichtigungen aus. Diese werden stattdessen zurückgestellt, bis die Gruppe durch einen Aufruf von ` endPropertyUpdateGroup` beendet wird.

Gruppen können verschachtelt werden. In diesem Fall endet die Aufschiebung erst, nachdem die äußerste Gruppe beendet wurde.

Hinweis: Änderungsbenachrichtigungen werden erst gesendet, nachdem alle von der Gruppe betroffenen Eigenschaftswerte auf ihre neuen Werte aktualisiert wurden. Dies ermöglicht die Wiederherstellung einer Klasseninvariante, wenn mehrere Eigenschaften aktualisiert werden müssen, und verhindert, dass externe Beobachter einen inkonsistenten Zustand bemerken.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch Qt::endPropertyUpdateGroup und QScopedPropertyUpdateGroup.

[since 6.2] void endPropertyUpdateGroup()

Beendet eine Eigenschaftsaktualisierungsgruppe. Wenn die äußerste Gruppe beendet wurde, erfolgen nun die aufgeschobenen Bindungsauswertungen und Benachrichtigungen.

Warnung: Der Aufruf von `endPropertyUpdateGroup` ohne vorherigen Aufruf von ` beginPropertyUpdateGroup ` führt zu undefiniertem Verhalten.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch „ Qt::beginPropertyUpdateGroup “ und „ 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.