QQuickAttachedPropertyPropagator Class
Die Klasse QQuickAttachedPropertyPropagator bietet eine Möglichkeit, angehängte Eigenschaften zu propagieren. Mehr...
Kopfzeile: | #include <QQuickAttachedPropertyPropagator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS QuickControls2) target_link_libraries(mytarget PRIVATE Qt6::QuickControls2) |
qmake: | QT += quickcontrols2 |
Seit: | Qt 6.5 |
Vererbt: | QObject |
Öffentliche Funktionen
QQuickAttachedPropertyPropagator(QObject *parent = nullptr) | |
virtual | ~QQuickAttachedPropertyPropagator() |
QList<QQuickAttachedPropertyPropagator *> | attachedChildren() const |
QQuickAttachedPropertyPropagator * | attachedParent() const |
Geschützte Funktionen
virtual void | attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent) |
void | initialize() |
Detaillierte Beschreibung
In QML ist es möglich, Eigenschaften und Signalhandler an Objekte anzuhängen. Providing Attached Properties geht näher darauf ein, wie Sie Ihre eigenen angehängten C++-Typen offenlegen können.
QQuickAttachedPropertyPropagator bietet eine API zur Weitergabe von angehängten Eigenschaften von einem übergeordneten Objekt an seine Kinder, ähnlich wie font und palette. Es unterstützt die Weitergabe durch items, popups und windows.
Wenn die Weitergabe von Eigenschaften nicht wichtig ist, sollten Sie stattdessen ein C++ oder ein QML-Singleton verwenden, da es für diesen Anwendungsfall besser geeignet ist und effizienter ist, da es nur ein QObject benötigt.
Um QQuickAttachedPropertyPropagator zu verwenden:
- Ableiten von ihm
- Rufen Sie initialize() im Konstruktor auf
- Definieren Sie je nach Bedarf Set/Inherit/Propagate/Reset-Funktionen für jede Eigenschaft
- Neuimplementierung von attachedParentChange() zur Behandlung der Eigenschaftsvererbung
- Implementieren Sie eine statische Funktion
qmlAttachedProperties
und deklarieren Sie den Typ als angehängten QML-Typ mit QML_ELEMENT und QML_ATTACHED, wie in Bereitstellen angehängter Eigenschaften beschrieben.
Ein Beispiel, das dies eingehend demonstriert, finden Sie unter Qt Quick Controls - Attached Style Properties Example.
Siehe auch Styling Qt Quick Controls.
Dokumentation der Mitgliedsfunktionen
[explicit]
QQuickAttachedPropertyPropagator::QQuickAttachedPropertyPropagator(QObject *parent = nullptr)
Konstruiert einen QQuickAttachedPropertyPropagator mit dem angegebenen parent.
Die parent
wird verwendet, um die attached parent dieses Objekts zu finden.
Abgeleitete Klassen sollten initialize() in ihrem Konstruktor aufrufen.
[virtual noexcept]
QQuickAttachedPropertyPropagator::~QQuickAttachedPropertyPropagator()
Zerstört die QQuickAttachedPropertyPropagator.
QList<QQuickAttachedPropertyPropagator *> QQuickAttachedPropertyPropagator::attachedChildren() const
Diese Funktion gibt die angehängten Kinder dieses angehängten Objekts zurück.
Die angehängten Kinder werden bei der Weitergabe von Eigenschaftswerten verwendet:
void MyStyle::propagateTheme() { const auto styles = attachedChildren(); for (QQuickAttachedPropertyPropagator *child : styles) { MyStyle *myStyle = qobject_cast<MyStyle *>(child); if (myStyle) myStyle->inheritTheme(m_theme); } }
QQuickAttachedPropertyPropagator *QQuickAttachedPropertyPropagator::attachedParent() const
Diese Funktion gibt das angehängte Elternteil dieses angehängten Objekts zurück.
Das angehängte übergeordnete Objekt wird bei der Vererbung von Eigenschaftswerten verwendet:
void MyStyle::resetTheme() { if (!m_explicitTheme) return; m_explicitTheme = false; MyStyle *myStyle = qobject_cast<MyStyle *>(attachedParent()); inheritTheme(myStyle ? myStyle->theme() : globalTheme); }
[virtual protected]
void QQuickAttachedPropertyPropagator::attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent)
Diese Funktion wird immer dann aufgerufen, wenn das angehängte Elternteil dieser QQuickAttachedPropertyPropagator von oldParent zu newParent wechselt.
Unterklassen sollten diese Funktion reimplementieren, um angehängte Eigenschaften von newParent
zu erben.
void MyStyle::attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent) { Q_UNUSED(oldParent); MyStyle *attachedParentStyle = qobject_cast<MyStyle *>(newParent); if (attachedParentStyle) { inheritTheme(attachedParentStyle->theme()); // Do any other inheriting here... } }
[protected]
void QQuickAttachedPropertyPropagator::initialize()
Findet und setzt das angehängte übergeordnete Objekt für dieses angehängte Objekt und tut dann dasselbe für seine Kinder. Diese Funktion muss bei der Erstellung des angehängten Objekts aufgerufen werden, damit die Weitergabe funktioniert.
Es kann sinnvoll sein, vor dem Aufruf dieser Funktion die globalen Werte/Standardwerte zu lesen. Beispielsweise prüft der Imagine-Stil vor dem Aufruf von initialize()
ein statisches "globalsInitialized"-Flag, um festzustellen, ob er Standardwerte aus QSettings lesen soll. Die Werte aus dieser Datei bilden die Grundlage für alle angehängten Eigenschaftswerte, die nicht explizit festgelegt wurden.
MyStyle::MyStyle(QObject *parent) : QQuickAttachedPropertyPropagator(parent) , m_theme(globalTheme) { // A static function could be called here that reads globalTheme from a // settings file once at startup. That value would override the global // value. This is similar to what the Imagine and Material styles do, for // example. initialize(); }
© 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.