Auf dieser Seite

QObjectComputedProperty Class

template <typename Class, typename T, auto Offset, auto Getter> class QObjectComputedProperty

Die Klasse „QObjectComputedProperty“ ist eine Vorlagenklasse, die dabei helfen soll, alte Eigenschaften in das System der bindbaren Eigenschaften zu portieren. Mehr...

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

Öffentliche Funktionen

Makros

(since 6.0) Q_OBJECT_COMPUTED_PROPERTY(containingClass, type, name, callback)

Ausführliche Beschreibung

QObjectComputedProperty ist eine Template-Klasse, bei der der Template-Parameter „ Class “ die zugehörige von „ QObject “ abgeleitete Klasse angibt, „ T “ den Typ des berechneten Eigenschaftswerts, „ Offset “ die Position der Eigenschaft innerhalb der Klasse und „ Getter “ die Mitgliedsfunktion, die den Eigenschaftswert berechnet.

`QObjectComputedProperty` ist eine schreibgeschützte Eigenschaft, die bei jedem Lesezugriff neu berechnet wird. Sie speichert den berechneten Wert nicht. Sie ist eine der Qt-internen Klassen, die Qt-Bindable-Properties implementieren. `QObjectComputedProperty` wird in der Regel nicht direkt verwendet; stattdessen wird mithilfe des Makros ` Q_OBJECT_COMPUTED_PROPERTY ` eine Instanz davon erstellt.

Siehe das folgende Beispiel.

class Client{};

class MyClassPrivate : public QObject
{
public:
    QList<Client> clients;
    bool hasClientsActualCalculation() const { return clients.size() > 0; }
    Q_OBJECT_COMPUTED_PROPERTY(MyClassPrivate, bool, hasClientsData,
                               &MyClassPrivate::hasClientsActualCalculation)
};

class MyClass : public QObject
{
    Q_OBJECT
    Q_PROPERTY(bool hasClients READ hasClients STORED false BINDABLE bindableHasClients)
public:
    QBindable<bool> bindableHasClients()
    {
        return QBindable<bool>(&d_func()->hasClientsData);
    }
    bool hasClients() const
    {
        return d_func()->hasClientsData.value();
    }
    void addClient(const Client &c)
    {
        Q_D(MyClass);
        d->clients.push_back(c);
        // notify that the value could have changed
        d->hasClientsData.notify();
    }
private:
    Q_DECLARE_PRIVATE(MyClass)
};

Die Regeln für Getter in „Bindable Property Getters and Setters“ gelten auch für QObjectComputedProperty. Insbesondere sollte der Getter trivial sein und lediglich den Wert des QObjectComputedProperty-Objekts zurückgeben. Der an QObjectComputedProperty übergebene Callback sollte in der Regel eine private Methode sein, die ausschließlich von QObjectComputedProperty aufgerufen wird.

Ein Setter ist weder erforderlich noch zulässig, da QObjectComputedProperty schreibgeschützt ist.

Um korrekt an der Abhängigkeitsverwaltung teilzunehmen, muss QObjectComputedProperty wissen, wann sich sein Wert – das Ergebnis des ihm übergebenen Callbacks – möglicherweise geändert hat. Wann immer sich eine im Callback verwendete bindbare Eigenschaft ändert, geschieht dies automatisch. Sollte sich das Ergebnis des Callbacks aufgrund einer Änderung eines Werts ändern, der keine bindbare Eigenschaft ist, liegt es in der Verantwortung des Entwicklers, ` notify ` für das `QObjectComputedProperty`-Objekt aufzurufen. Dadurch werden abhängige Eigenschaften über die potenzielle Änderung informiert.

Beachten Sie, dass der Aufruf von ` notify ` Änderungshandler in abhängigen Eigenschaften auslösen kann, die wiederum das Objekt verwenden könnten, zu dem `QObjectComputedProperty` gehört. Daher darf ` notify ` nicht aufgerufen werden, wenn sich das Objekt in einem Übergangs- oder ungültigen Zustand befindet.

QObjectComputedProperty eignet sich nicht für Berechnungen, die von Eingaben abhängen, die sich ohne Vorankündigung ändern können, wie beispielsweise der Inhalt einer Datei.

Siehe auch Q_OBJECT_COMPUTED_PROPERTY, QProperty, QObjectBindableProperty, das Qt-Eigenschaftssystem und Qt-Bindable-Eigenschaften.

Dokumentation zu den Member-Funktionen

[default] QObjectComputedProperty::QObjectComputedProperty()

Erstellt standardmäßig eine Instanz von ` QObjectComputedProperty`.

Makro-Dokumentation

[since 6.0] Q_OBJECT_COMPUTED_PROPERTY(containingClass, type, name, callback)

Deklariert eine „ QObjectComputedProperty “ innerhalb von „ containingClass “ vom Typ „ type “ mit dem Namen „ name “. Das Argument „ callback “ gibt eine GETTER-Funktion an, die beim Auswerten der Eigenschaft aufgerufen werden soll.

Dieses Makro wurde in Qt 6.0 eingeführt.

Siehe auch „ QObjectBindableProperty“ , „Qt's Property System“ und „Qt Bindable Properties“.

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