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:

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.