Spec-Zone.ru › Qt 6.1

Класс QQmlListProperty

шаблон <typename T> class QQmlListProperty

Класс QQmlListProperty позволяет приложениям предоставлять свойства, подобные спискам, производных от QObject, в QML. Подробнее...

Заголовок: #include <QQmlListProperty>
CMake: find_package(Qt6 COMPONENTS Qml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
С момента: Qt 5.0
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые типы

AppendFunction
AtFunction
ClearFunction
CountFunction
RemoveLastFunction
ReplaceFunction

Открытые функции

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

Макросы

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT

Подробное описание

В QML есть много свойств списка, где может быть назначено более одного значения объекта. Использование свойства списка из QML выглядит так:

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

QQmlListProperty инкапсулирует набор указателей на функции, которые представляют собой набор действий, которые QML может выполнить со списком — добавление элементов, извлечение элементов и очистка списка. В будущем могут быть добавлены дополнительные операции. Все свойства списка должны реализовывать операцию добавления, но остальные являются необязательными.

Для обеспечения свойства списка класс C++ должен реализовать обратные вызовы операций, а затем вернуть соответствующее значение QQmlListProperty из получения свойства. Свойства списка не должны иметь установщика. В приведенном выше примере декларативное Q_PROPERTY() будет выглядеть следующим образом:

Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

Свойства списка QML являются безопасными по типу — в этом случае Fruit является типом QObject, от которого Apple, Orange и Banana все наследуются.

См. также Расширение QML — пример типов свойства объекта и списка.

Документация по типу членов

[alias] QQmlListProperty::AppendFunction

Синоним для void (*)(QQmlListProperty<T> *property, T *value).

Добавляет value в список property.

[alias] QQmlListProperty::AtFunction

Синоним для T *(*)(QQmlListProperty<T> *property, qsizetype index).

Возвращает элемент по позиции index в списке property.

[alias] QQmlListProperty::ClearFunction

Синоним для void (*)(QQmlListProperty<T> *property).

Очищает список property.

[alias] QQmlListProperty::CountFunction

Синоним для qsizetype (*)(QQmlListProperty<T> *property).

Возвращает количество элементов в списке property.

[alias] QQmlListProperty::RemoveLastFunction

Синоним для void (*)(QQmlListProperty<T> *property).

Удаляет последний элемент из списка property.

[alias] QQmlListProperty::ReplaceFunction

Синоним для void (*)(QQmlListProperty<T> *property, qsizetype index, T *value).

Заменяет элемент по позиции index в списке property значением value.

Документация по открытым функциям

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

Создает только для чтения QQmlListProperty из набора функций операций count и at. Может быть передан необрабатываемый дескриптор data, к которому можно получить доступ из функций операций. Свойство списка остается действительным, пока существует object.

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

Создает QQmlListProperty из набора функций операций append, count, at, clear, replace и removeLast. Может быть передан необрабатываемый дескриптор data, к которому можно получить доступ из функций операций. Свойство списка остается действительным, пока существует object.

Можно передать нулевые указатели для любой функции, что может привести к синтезированию соответствующей функции с использованием других, если это возможно. QQmlListProperty может синтезировать

  • clear с использованием count и removeLast
  • replace с использованием count, at, clear и append
  • replace с использованием count, at, removeLast и append
  • removeLast с использованием count, at, clear и append

если они заданы. Это медленно, но если ваш список не предоставляет более быстрые варианты для этих примитивов, вы можете захотеть использовать синтезированные.

Кроме того, если какой-либо из count, at, append и clear не задан явно или не синтезирован, список не будет ни проектируемым, ни изменяемым в отладчике. Рекомендуется передавать достаточное количество корректных указателей, чтобы избежать этой ситуации.

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

Создает QQmlListProperty из набора функций операций append, count, at и clear. Может быть передан необрабатываемый дескриптор data, к которому можно получить доступ из функций операций. Свойство списка остается действительным, пока существует object.

Можно передать нулевые указатели для любой функции. Если передаются нулевые указатели, список не будет ни проектируемым, ни изменяемым в отладчике. Рекомендуется передавать корректные указатели для всех функций.

Примечание: Результирующее QQmlListProperty синтезирует методы removeLast() и replace() с использованием count, at, clear и append, если все они заданы. Это медленно. Если вы планируете изменять список помимо его очистки, вы должны явно передать эти методы.

[since 5.15] QQmlListProperty::QQmlListProperty(QObject *object, QList<T *> *list)

Удобный конструктор для создания значения QQmlListProperty из существующего списка QList list. Ссылка на list должна оставаться действительной до тех пор, пока существует object. object должен быть предоставлен.

Эта функция была добавлена в Qt 5.15.

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

Возвращает true, если этот QQmlListProperty равен other, иначе false.

Документация макросов

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND

Этот макрос определяет поведение свойств списка этого класса как Добавление. При присваивании свойства в производном типе значения добавляются к значениям базового класса. Это поведение по умолчанию.

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

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

См. также QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT и QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE.

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE

Этот макрос определяет поведение свойств списка этого класса как Замена. При присваивании свойства в производном типе значения заменяют значения базового класса.

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

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

См. также QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND и QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT.

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT

Этот макрос определяет поведение свойств списка этого класса как ЗаменаЕслиНеПоУмолчанию. При присваивании свойства в производном типе значения заменяют значения базового класса, если это не свойство по умолчанию. В случае свойства по умолчанию значения добавляются к значениям базового класса.

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

См. также QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND и QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qqmllistproperty.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API