QProperty Class

template <typename T> class QProperty

Die Klasse QProperty ist eine Vorlagenklasse, die automatische Eigenschaftsbindungen ermöglicht. Mehr...

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

Öffentliche Funktionen

QProperty()
QProperty(Functor &&f)
QProperty(T &&initialValue)
QProperty(const QPropertyBinding<T> &binding)
QProperty(const T &initialValue)
~QProperty()
QPropertyNotifier addNotifier(Functor f)
QPropertyBinding<T> binding() const
QPropertyChangeHandler<Functor> onValueChanged(Functor f)
QPropertyBinding<T> setBinding(const QPropertyBinding<T> &newBinding)
QPropertyBinding<T> setBinding(Functor f)
bool setBinding(const QUntypedPropertyBinding &newBinding)
void setValue(QProperty<T>::parameter_type newValue)
void setValue(QProperty<T>::rvalue_ref newValue)
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()

Detaillierte Beschreibung

QProperty<T> ist eine der Klassen, die Qt Bindable Properties implementieren. Sie ist ein Container, der eine Instanz von T enthält. Sie können ihr einen Wert zuweisen und ihn über die Funktion value() oder den T-Konvertierungsoperator auslesen. Sie können die Eigenschaft auch an einen Ausdruck binden, der den Wert dynamisch berechnet, den Bindungsausdruck. Er 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 QProperty in Q_PROPERTY mit dem BINDABLE-Schlüsselwort darzustellen. Infolgedessen verwendet die QML-Engine sie 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 Wenn die Eigenschaft BINDABLE ist, verwendet die Engine die dem C++-Eigenschaftssystem inhärente Änderungsverfolgung, um über Änderungen benachrichtigt zu werden, und verlässt sich nicht darauf, dass Signale ausgesendet werden.

Dokumentation der Mitgliedsfunktionen

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

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

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

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 einen Verweis auf diese QProperty zurück.

QProperty::QProperty()

Konstruiert eine Eigenschaft mit einer standardmäßig konstruierten Instanz von T.

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

Konstruiert eine Eigenschaft, die an den angegebenen Bindungsausdruck f 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 entsprechend aktualisiert.

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

Move-Konstruiert eine Eigenschaft mit der angegebenen initialValue.

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

Konstruiert 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 entsprechend aktualisiert.

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

Konstruiert eine Eigenschaft mit der angegebenen initialValue.

QProperty::~QProperty()

Zerstört das Eigentum.

template <typename Functor> QPropertyNotifier QProperty::addNotifier(Functor f)

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

Es wird erwartet, dass der Rückruf f ein Typ ist, der einen einfachen Aufrufoperator () ohne Parameter hat. Dies bedeutet, dass Sie einen C++-Lambda-Ausdruck, eine std::function oder sogar eine benutzerdefinierte Struktur mit einem Aufrufoperator bereitstellen können.

Das zurückgegebene Property Change Handler-Objekt verfolgt das Abonnement. Wenn es den Anwendungsbereich verlässt, wird der Callback abbestellt.

Diese Methode ist in einigen Fällen einfacher zu verwenden als onValueChanged(), da das zurückgegebene Objekt keine Vorlage ist. Es kann daher leichter gespeichert werden, z. B. als Mitglied in einer Klasse.

Siehe auch onValueChanged() und subscribe().

QPropertyBinding<T> QProperty::binding() const

Gibt den Bindungsausdruck zurück, der mit dieser Eigenschaft verknüpft ist. Ein standardmäßig konstruiertes QPropertyBinding<T> wird zurückgegeben, wenn keine solche Verknüpfung existiert.

Siehe auch setBinding().

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

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

Es wird erwartet, dass der Rückruf f ein Typ ist, der einen einfachen Aufrufoperator () ohne Parameter hat. Dies bedeutet, dass Sie einen C++-Lambda-Ausdruck, eine std::function oder sogar eine benutzerdefinierte Struktur mit einem Aufrufoperator angeben können.

Das zurückgegebene Property Change Handler-Objekt behält die Registrierung im Auge. Wenn es den Anwendungsbereich verlässt, wird die Registrierung des Rückrufs aufgehoben.

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

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

Dies ist eine überladene Funktion.

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.

Siehe auch Formulierung einer Eigenschaft Bindung.

bool QProperty::setBinding(const QUntypedPropertyBinding &newBinding)

Dies ist eine überladene Funktion.

Verknüpft den Wert dieser Eigenschaft mit dem angegebenen newBinding Ausdruck. 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 derselbe ist wie der Typ, den die Bindungsfunktion zurückgibt; andernfalls false.

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

Abonniert den angegebenen Funktor f als Callback, der sofort und immer dann aufgerufen wird, wenn sich der Wert der Eigenschaft in der Zukunft ändert. Bei jeder Wertänderung wird der Handler entweder sofort oder zeitversetzt aufgerufen, je nach Kontext.

Es wird erwartet, dass der Callback f ein Typ ist, der kopiert werden kann und einen einfachen call operator() ohne Parameter hat. Dies bedeutet, dass Sie einen C++-Lambda-Ausdruck, eine std::function oder sogar eine benutzerdefinierte Struktur mit einem Aufrufoperator bereitstellen können.

Das zurückgegebene Property Change Handler-Objekt verfolgt das Abonnement. Wenn es den Anwendungsbereich verlässt, wird der Callback abbestellt.

QPropertyBinding<T> QProperty::takeBinding()

Entkoppelt den Bindungsausdruck von dieser Eigenschaft und gibt ihn zurück. Nach dem Aufruf dieser Funktion ändert sich der Wert der Eigenschaft nur, 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. Dies kann einen Bindungsausdruck auswerten, der mit dieser Eigenschaft verknüpft ist, bevor der Wert zurückgegeben wird.

Siehe auch setValue().

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 zu einer Änderungsbenachrichtigung. Diese werden stattdessen aufgeschoben, bis die Gruppe durch einen Aufruf von endPropertyUpdateGroup beendet wird.

Gruppen können verschachtelt werden. In diesem Fall endet der Aufschub erst nach Beendigung der äußersten Gruppe.

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

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, und die aufgeschobenen Datenflussauswertungen und Benachrichtigungen jetzt erfolgen.

Warnung: Der Aufruf von endPropertyUpdateGroup ohne einen vorhergehenden Aufruf von beginPropertyUpdateGroup führt zu undefiniertem Verhalten.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch Qt::beginPropertyUpdateGroup und QScopedPropertyUpdateGroup.

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