Класс QQmlListProperty
шаблон <typename T> class QQmlListPropertyКласс QQmlListProperty позволяет приложениям экспонировать свойства, похожие на списки, классов, производных от QObject, в QML. Подробнее...
| Заголовок: | #include <QQmlListProperty> |
| qmake: | QT += qml |
| С момента: | Qt 5.0 |
Этот класс был представлен в 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 имеет множество свойств списков, где может быть назначено более одного значения объекта. Использование свойства списка из 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> *, T *).
Синоним для void (*)(QQmlListProperty<T> *property, T *value).
Добавляет значение в список property.
[alias] QQmlListProperty::AtFunction
Это псевдоним типа T *(*)(QQmlListProperty<T> *, int).
Синоним для T *(*)(QQmlListProperty<T> *property, int index).
Возвращает элемент с позицией index в списке property.
[alias] QQmlListProperty::ClearFunction
Это псевдоним типа void (*)(QQmlListProperty<T> *).
Синоним для void (*)(QQmlListProperty<T> *property).
Очищает список property.
[alias] QQmlListProperty::CountFunction
Это псевдоним типа int (*)(QQmlListProperty<T> *).
Синоним для int (*)(QQmlListProperty<T> *property).
Возвращает количество элементов в списке property.
[alias] QQmlListProperty::RemoveLastFunction
Это псевдоним типа void (*)(QQmlListProperty<T> *).
Синоним для void (*)(QQmlListProperty<T> *property).
Удаляет последний элемент из списка property.
[alias] QQmlListProperty::ReplaceFunction
Это псевдоним типа void (*)(QQmlListProperty<T> *, int, T *).
Синоним для void (*)(QQmlListProperty<T> *property, int index, T *value).
Заменяет элемент с позицией index в списке property на значение.
Документация по функциям членов
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, если все они заданы. Это медленно. Если вы планируете манипулировать списком, кроме его очистки, вы должны явно предоставить эти методы.
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.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qqmllistproperty.html