Sur cette page

QQmlListProperty Class

template <typename T> class QQmlListProperty

La classe QQmlListProperty permet aux applications d'exposer les propriétés de type liste des classes dérivées de QObject à QML. Plus d'informations...

En-tête : #include <QQmlListProperty>
CMake : find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake : QT += qml

Types publics

Fonctions publiques

QQmlListProperty(QObject *object, QList<T *> *list)
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at)
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear)
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear, QQmlListProperty<T>::ReplaceFunction replace, QQmlListProperty<T>::RemoveLastFunction removeLast)
bool operator==(const QQmlListProperty<T> &other) const

Variables publiques

void *data
QObject *object

Macros

Description détaillée

QML possède de nombreuses propriétés de liste, où plusieurs valeurs d'objets peuvent être assignées. L'utilisation d'une propriété de liste en QML se présente comme suit :

FruitBasket {
    fruit: [
        Apple {},
        Orange{},
        Banana{}
    ]
}

La propriété QQmlListProperty encapsule un groupe de pointeurs de fonctions qui représentent l'ensemble des actions que QML peut effectuer sur la liste - ajouter des éléments, récupérer des éléments et effacer la liste. À l'avenir, d'autres opérations pourront être prises en charge. Toutes les propriétés de liste doivent implémenter l'opération append, mais les autres sont facultatives.

Pour fournir une propriété de liste, une classe C++ doit implémenter les callbacks de l'opération, puis renvoyer une valeur QQmlListProperty appropriée à partir du getter de la propriété. Les propriétés de liste ne doivent pas avoir de "setter". Dans l'exemple ci-dessus, la déclaration Q_PROPERTY() se présentera comme suit :

Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

Les propriétés de liste QML sont sûres en termes de type - dans ce cas, Fruit est un type QObject dont Apple, Orange et Banana dérivent tous.

Vous pouvez utiliser QQmlListReference pour manipuler une QQmlListProperty à partir de C++ en utilisant une API légèrement plus ergonomique, au prix d'une certaine surcharge.

Voir également le chapitre 5 : Utilisation des types de propriétés de liste et QQmlListReference.

Documentation sur les types de membres

[alias] QQmlListProperty::AppendFunction

Synonyme de void (*)(QQmlListProperty<T> *property, T *value).

Ajouter le value à la liste property.

[alias] QQmlListProperty::AtFunction

Synonyme de T *(*)(QQmlListProperty<T> *property, qsizetype index).

Retourne l'élément à la position index dans la liste property.

[alias] QQmlListProperty::ClearFunction

Synonyme de void (*)(QQmlListProperty<T> *property).

Effacer la liste property.

[alias] QQmlListProperty::CountFunction

Synonyme de qsizetype (*)(QQmlListProperty<T> *property).

Renvoie le nombre d'éléments de la liste property.

[alias] QQmlListProperty::RemoveLastFunction

Synonyme de void (*)(QQmlListProperty<T> *property).

Retirer le dernier élément de la liste property.

[alias] QQmlListProperty::ReplaceFunction

Synonyme de void (*)(QQmlListProperty<T> *property, qsizetype index, T *value).

Remplacer l'élément à la position index dans la liste property par value.

Documentation des fonctions membres

QQmlListProperty::QQmlListProperty(QObject *object, QList<T *> *list)

Constructeur de commodité pour créer une valeur QQmlListProperty à partir d'une liste existante QList list . Le object propriétaire de la liste et le list lui-même doivent être fournis et maintenus en vie tant que vous détenez une QQmlListProperty qui s'y réfère.

C'est la manière la plus simple et la plus sûre de fournir une QQmlListProperty soutenue par une QList et elle devrait être utilisée dans la plupart des cas. Une invocation typique ressemble à ceci :

QQmlListProperty<PieSlice> PieChart::slices()
{
    return QQmlListProperty<PieSlice>(this, &m_slices);
}

QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at)

Construire un QQmlListProperty en lecture seule à partir d'un ensemble de fonctions d'opération count et at. Une poignée opaque data peut être transmise, à laquelle il est possible d'accéder à partir des fonctions d'opération. La propriété de liste reste valide tant que le site object qui la possède existe.

QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear)

Construire un QQmlListProperty à partir d'un ensemble de fonctions d'opération append, count, at, et clear. Une poignée opaque data peut être transmise, à laquelle il est possible d'accéder à partir des fonctions d'opération. La propriété de liste reste valide tant que le site object propriétaire de la propriété de liste existe.

Des pointeurs nuls peuvent être transmis pour n'importe quelle fonction. Si des pointeurs nuls sont transmis, la liste ne pourra être ni conçue ni modifiée par le débogueur. Il est recommandé de fournir des pointeurs valides pour toutes les fonctions.

Note : La QQmlListProperty résultante synthétisera les méthodes removeLast() et replace() en utilisant count, at, clear, et append si elles sont toutes fournies. Cette méthode est lente. Si vous avez l'intention de manipuler la liste au-delà de son effacement, vous devez explicitement fournir ces méthodes.

QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear, QQmlListProperty<T>::ReplaceFunction replace, QQmlListProperty<T>::RemoveLastFunction removeLast)

Construit une QQmlListProperty à partir d'un ensemble de fonctions d'opération append, count, at, clear, replace, et removeLast. Une poignée opaque data peut être transmise, à laquelle il est possible d'accéder à partir des fonctions d'opération. La propriété de liste reste valide tant que le object qui possède la propriété de liste existe.

Des pointeurs nuls peuvent être transmis pour n'importe quelle fonction, ce qui permet de synthétiser la fonction concernée en utilisant les autres, si possible. QQmlListProperty peut synthétiser

  • clear en utilisant count et removeLast
  • replace en utilisant count, at, clear, et append
  • replace en utilisant count, at, removeLast, et append
  • removeLast en utilisant count, at, clear, et append

s'ils sont donnés. C'est lent, mais si votre liste ne fournit pas nativement des options plus rapides pour ces primitives, vous pouvez vouloir utiliser celles qui sont synthétisées.

De plus, si count, at, append, et clear ne sont ni donnés explicitement ni synthétisés, la liste ne sera ni concevable ni modifiable par le débogueur. Il est recommandé de fournir suffisamment de pointeurs valides pour éviter cette situation.

bool QQmlListProperty::operator==(const QQmlListProperty<T> &other) const

Retourne true si QQmlListProperty est égal à other, sinon false.

Documentation des variables membres

void *QQmlListProperty::data

Ce champ peut contenir un pointeur de données arbitraire

Si vous implémentez manuellement les méthodes d'accès et que vous avez besoin de stocker des données personnalisées, vous pouvez passer un pointeur arbitraire au constructeur de QQmlListProperty et le récupérer dans le champ de données lors d'un accès ultérieur au même QQmlListProperty.

Un QQmlListProperty constructed from a QList pointer utilise ce champ pour stocker le pointeur vers la liste elle-même, car il ne peut pas accéder directement au contenu de la liste à partir du propriétaire.

QObject *QQmlListProperty::object

Ce champ contient le propriétaire de la liste QQmlListProperty

Lorsque vous implémentez manuellement les méthodes d'accès, vous pouvez avoir besoin d'utiliser ce champ pour récupérer le contenu de la liste manipulée.

Documentation sur les macros

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND

Cette macro définit le comportement des propriétés de liste de cette classe par rapport à Append. Lors de l'affectation de la propriété dans un type dérivé, les valeurs sont ajoutées à celles de la classe de base. Il s'agit du comportement par défaut.

class FruitBasket : QObject {
    Q_OBJECT
    QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND
    Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

    public:
    // ...
    QQmlListProperty<Fruit> fruit();
    // ...
};

Voir également QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE, et Définir les types d'objets à l'aide des documents QML.

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE

Cette macro définit le comportement des propriétés de liste de cette classe par rapport à Replace. Lors de l'affectation de la propriété dans un type dérivé, les valeurs remplacent celles de la classe de base.

class FruitBasket : QObject {
    Q_OBJECT
    QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE
    Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

    public:
    // ...
    QQmlListProperty<Fruit> fruit();
    // ...
};

Voir également QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT, et Définir les types d'objets à l'aide des documents QML.

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT

Cette macro définit le comportement des propriétés de liste de cette classe à ReplaceIfNotDefault. Lors de l'affectation de la propriété dans un type dérivé, les valeurs remplacent celles de la classe de base sauf s'il s'agit de la propriété par défaut. Dans le cas de la propriété par défaut, les valeurs sont ajoutées à celles de la classe de base.

class FruitBasket : QObject {
    Q_OBJECT
    QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT
    Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

    public:
    // ...
    QQmlListProperty<Fruit> fruit();
    // ...
};

Voir également QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE, et Définir les types d'objets à l'aide des documents QML.

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