QQmlListProperty Class

template <typename T> class QQmlListProperty

Die Klasse QQmlListProperty ermöglicht es Anwendungen, listenartige Eigenschaften von QObject-abgeleiteten Klassen in QML darzustellen. Mehr...

Kopfzeile: #include <QQmlListProperty>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml

Öffentliche Typen

Öffentliche Funktionen

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

Makros

Detaillierte Beschreibung

QML hat viele Listeneigenschaften, denen mehr als ein Objektwert zugewiesen werden kann. Die Verwendung einer Listeneigenschaft von QML sieht wie folgt aus:

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

Die QQmlListProperty kapselt eine Gruppe von Funktionszeigern, die eine Reihe von Aktionen darstellen, die QML mit der Liste durchführen kann - Hinzufügen von Elementen, Abrufen von Elementen und Löschen der Liste. In der Zukunft können weitere Operationen unterstützt werden. Alle Listeneigenschaften müssen die Append-Operation implementieren, die übrigen sind optional.

Um eine Listeneigenschaft bereitzustellen, muss eine C++-Klasse die Operations-Callbacks implementieren und dann einen entsprechenden QQmlListProperty-Wert aus dem Property-Getter zurückgeben. Listeneigenschaften sollten keinen Setter haben. Im obigen Beispiel sieht die Deklaration Q_PROPERTY() wie folgt aus:

Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

QML-Listeneigenschaften sind typsicher - in diesem Fall ist Fruit ein QObject -Typ, von dem Apple, Orange und Banana alle abgeleitet sind.

Siehe auch Kapitel 5: Verwendung von Listeneigentumstypen.

Dokumentation der Mitgliedstypen

[alias] QQmlListProperty::AppendFunction

Synonym für void (*)(QQmlListProperty<T> *property, T *value).

Hängen Sie die value an die Liste property an.

[alias] QQmlListProperty::AtFunction

Synonym für T *(*)(QQmlListProperty<T> *property, qsizetype index).

Gibt das Element an der Position index in der Liste property zurück.

[alias] QQmlListProperty::ClearFunction

Synonym für void (*)(QQmlListProperty<T> *property).

Löschen Sie die Liste property.

[alias] QQmlListProperty::CountFunction

Synonym für qsizetype (*)(QQmlListProperty<T> *property).

Rückgabe der Anzahl der Elemente in der Liste property.

[alias] QQmlListProperty::RemoveLastFunction

Synonym für void (*)(QQmlListProperty<T> *property).

Das letzte Element aus der Liste entfernen property.

[alias] QQmlListProperty::ReplaceFunction

Synonym für void (*)(QQmlListProperty<T> *property, qsizetype index, T *value).

Ersetzt das Element an Position index in der Liste property durch value.

Dokumentation der Mitgliedsfunktionen

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

Convenience-Konstruktor zur Erzeugung eines QQmlListProperty-Wertes aus einem bestehenden QList list . Die Referenz list muss so lange gültig sein, wie object existiert. object muss angegeben werden.

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

Konstruiert eine schreibgeschützte QQmlListProperty aus einem Satz von Operationsfunktionen count und at. Es kann ein undurchsichtiges data -Handle übergeben werden, auf das von den Operationsfunktionen aus zugegriffen werden kann. Die Listeneigenschaft bleibt gültig, solange object existiert.

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

Konstruiert eine QQmlListProperty aus einem Satz von Operationsfunktionen append, count, at und clear. Es kann ein undurchsichtiges data -Handle übergeben werden, auf das von den Operationsfunktionen aus zugegriffen werden kann. Die Listeneigenschaft bleibt gültig, solange object existiert.

Null-Zeiger können für jede Funktion übergeben werden. Wenn Null-Zeiger übergeben werden, kann die Liste vom Debugger weder gestaltet noch geändert werden. Es wird empfohlen, gültige Zeiger für alle Funktionen zu übergeben.

Hinweis: Die resultierende QQmlListProperty wird die Methoden removeLast() und replace() unter Verwendung von count, at, clear und append synthetisieren, wenn alle diese Funktionen angegeben werden. Dies ist langsam. Wenn Sie beabsichtigen, die Liste über das Löschen hinaus zu manipulieren, sollten Sie diese Methoden explizit bereitstellen.

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)

Konstruiert eine QQmlListProperty aus einem Satz von Operationsfunktionen append, count, at, clear, replace und removeLast. Es kann ein undurchsichtiges data -Handle übergeben werden, auf das aus den Operationsfunktionen heraus zugegriffen werden kann. Die Listeneigenschaft bleibt gültig, solange object existiert.

Null-Zeiger können für jede Funktion übergeben werden, was dazu führt, dass die jeweilige Funktion, wenn möglich, mit Hilfe der anderen synthetisiert wird. QQmlListProperty kann synthetisieren

  • clear mit count und removeLast
  • replace mittels count, at, clear, und append
  • replace unter Verwendung von count, at, removeLast, und append
  • removeLast unter Verwendung von count, at, clear, und append

wenn diese gegeben sind. Dies ist langsam, aber wenn Ihre Liste nicht von Haus aus schnellere Optionen für diese Primitive bietet, sollten Sie die synthetisierten verwenden.

Wenn eine der Optionen count, at, append und clear weder explizit angegeben noch synthetisiert wird, kann die Liste vom Debugger weder entworfen noch geändert werden. Es wird empfohlen, genügend gültige Zeiger anzugeben, um diese Situation zu vermeiden.

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

Gibt true zurück, wenn diese QQmlListProperty gleich other ist, andernfalls false.

Makro-Dokumentation

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND

Dieses Makro definiert das Verhalten der Listeneigenschaften dieser Klasse zu Append. Bei der Zuweisung der Eigenschaft in einem abgeleiteten Typ werden die Werte an die der Basisklasse angehängt. Dies ist das Standardverhalten.

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

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

Siehe auch QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE, und Definieren von Objekttypen durch QML-Dokumente.

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE

Dieses Makro definiert das Verhalten der Listeneigenschaften dieser Klasse zu Replace. Bei der Zuweisung der Eigenschaft in einem abgeleiteten Typ ersetzen die Werte die der Basisklasse.

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

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

Siehe auch QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT, und Definieren von Objekttypen durch QML-Dokumente.

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT

Dieses Makro definiert das Verhalten der Listeneigenschaften dieser Klasse auf ReplaceIfNotDefault. Bei der Zuweisung der Eigenschaft in einem abgeleiteten Typ ersetzen die Werte die der Basisklasse, es sei denn, es handelt sich um die Standardeigenschaft. Im Falle der Standardeigenschaft werden die Werte an die Werte der Basisklasse angehängt.

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();
    // ...
};

Siehe auch QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE, und Definieren von Objekttypen durch QML-Dokumente.

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