Sur cette page

QObjectComputedProperty Class

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

La classe `QObjectComputedProperty` est une classe modèle destinée à faciliter le portage des anciennes propriétés vers le système de propriétés liables. En savoir plus…

En-tête : #include <QObjectComputedProperty>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Depuis : Qt 6.0
Hérite de : QUntypedPropertyData

Fonctions publiques

Macros

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

Description détaillée

QObjectComputedProperty est une classe de modèle où le paramètre de modèle Class spécifie la classe dérivée d'QObject, T spécifie le type de la valeur de la propriété calculée, Offset spécifie l'emplacement de la propriété au sein de la classe, et Getter spécifie la fonction membre qui calcule la valeur de la propriété.

QObjectComputedProperty est une propriété en lecture seule qui est recalculée à chaque lecture. Elle ne stocke pas la valeur calculée. Il s’agit de l’une des classes internes de Qt implémentant les propriétés liables (Bindable Properties) de Qt. QObjectComputedProperty n’est généralement pas utilisée directement ; à la place, une instance de cette classe est créée à l’aide de la macro ` Q_OBJECT_COMPUTED_PROPERTY `.

Voir l’exemple suivant.

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)
};

Les règles relatives aux accesseurs décrites dans la section « Accesseurs et mutateurs des propriétés liables » s’appliquent également à QObjectComputedProperty. En particulier, l’accesseur doit être trivial et se contenter de renvoyer la valeur de l’objet QObjectComputedProperty. La fonction de rappel fournie à `QObjectComputedProperty` doit généralement être une méthode privée qui n’est appelée que par `QObjectComputedProperty`.

Aucun setter n’est requis ni autorisé, car QObjectComputedProperty est en lecture seule.

Pour participer correctement à la gestion des dépendances, QObjectComputedProperty doit savoir quand sa valeur, c’est-à-dire le résultat de la fonction de rappel qui lui est fournie, a pu changer. Chaque fois qu’une propriété liable utilisée dans la fonction de rappel change, cela se produit automatiquement. Si le résultat de la fonction de rappel est susceptible de changer en raison d’une modification d’une valeur qui n’est pas une propriété liable, il incombe au développeur d’appeler la méthode ` notify ` sur l’objet `QObjectComputedProperty`. Cela informera les propriétés dépendantes de ce changement potentiel.

Notez que l’appel de ` notify ` peut déclencher des gestionnaires de changement dans les propriétés dépendantes, qui peuvent à leur tour utiliser l’objet dont `QObjectComputedProperty` est un membre. Par conséquent, ` notify ` ne doit pas être appelé lorsque l’objet se trouve dans un état transitoire ou invalide.

QObjectComputedProperty n’est pas adapté à une utilisation avec un calcul dépendant d’une entrée susceptible de changer sans préavis, comme le contenu d’un fichier.

Voir également Q_OBJECT_COMPUTED_PROPERTY, QProperty, QObjectBindableProperty, le système de propriétés de Qt et les propriétés liables de Qt.

Documentation sur les fonctions membres

[default] QObjectComputedProperty::QObjectComputedProperty()

Construit par défaut une instance de ` QObjectComputedProperty`.

Documentation des macros

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

Déclare une propriété « QObjectComputedProperty » au sein de « containingClass » de type « type » et nommée « name ». L'argument « callback » spécifie une fonction GETTER à appeler lors de l'évaluation de la propriété.

Cette macro a été introduite dans Qt 6.0.

Voir également QObjectBindableProperty, le système de propriétés de Qt et les propriétés liables de Qt.

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