Тип QML DelegateModelGroup
Оборачивает отфильтрованный набор элементов данных отображения. Подробнее...
| Заявление об импорте: | import QtQml.Models 2.12 |
Свойства
- count : int
- includeByDefault : bool
- name : string
Сигналы
- changed(array removed, array inserted)
Методы
- addGroups(int index, int count, stringlist groups)
- create(int index)
- create(int index, jsdict data, array groups = undefined)
- create(jsdict data, array groups = undefined)
- object get(int index)
- insert(int index, jsdict data, array groups = undefined)
- insert(jsdict data, var groups = undefined)
- move(var from, var to, int count)
- remove(int index, int count)
- removeGroups(int index, int count, stringlist groups)
- resolve(int from, int to)
- setGroups(int index, int count, stringlist groups)
- setGroups(int index, int count, stringlist groups)
Подробное описание
Тип DelegateModelGroup предоставляет способ обращения к данным модели элементов-делегатов DelegateModel, а также сортировки и фильтрации этих элементов-делегатов.
Начальный набор экземпляризуемых элементов-делегатов в DelegateModel представлен группой items, которая обычно напрямую отражает содержимое модели, назначенной свойству DelegateModel::model. Этот набор может быть изменен на содержимое любого другого члена DelegateModel::groups путём назначения имени этой DelegateModelGroup свойству DelegateModel::filterOnGroup.
К данным элемента в DelegateModelGroup можно получить доступ с помощью функции get(), которая возвращает информацию о членстве в группе и индексах, а также данные модели. В сочетании с функцией move() это можно использовать для реализации сортировки представления, с remove() для фильтрации элементов из представления, или с setGroups() и делегатами Package для категоризации элементов в различных представлениях. Разные группы могут быть отсортированы независимо только если они не пересекаются. Перемещение элемента в одной группе также переместит его во всех остальных группах, в которых он участвует.
Данные из моделей могут быть дополнены путём прямого вставки данных в DelegateModelGroup с помощью функции insert(). Это можно использовать для введения тестовых элементов в представление или элементов-заполнителей, которые позже разрешаются на реальные данные модели, когда они станут доступны.
Элементы-делегаты также могут быть непосредственно созданы из DelegateModelGroup с помощью функции create(), что позволяет использовать DelegateModel без соответствующего типа представления или выборочно создавать определённые элементы, которые должны быть созданы независимо от того, находятся ли они в данный момент в видимой области представления.
См. также QML Dynamic View Ordering Tutorial.
Документация по свойствам
count : int
Это свойство содержит количество элементов в группе.
includeByDefault : bool
Это свойство указывает, назначаются ли новые элементы этой группе по умолчанию.
name : string
Это свойство содержит имя группы.
Каждая группа в модели должна иметь уникальное имя, начинающееся с строчной буквы.
Документация по сигналам
changed(array removed, array inserted)
Этот сигнал излучается при удалении или вставке элементов в группу.
Каждый объект в массивах removed и inserted имеет два значения: index первого вставленного или удалённого элемента и count количества последовательных элементов, вставленных или удалённых.
Каждый индекс корректируется для предыдущих изменений, при этом все удалённые элементы предшествуют вставленным элементам.
Соответствующий обработчик — onChanged.
Документация по методам
create(int index)
Возвращает ссылку на созданный элемент по индексу index в группе.
Если объект data предоставлен, он будет вставлен по индексу index, и будет возвращён элемент, ссылающийся на эту новую запись. Дополнительный параметр groups определяет группы, к которым должна принадлежать новая запись; если он не указан, это равно группе, на которой был вызван create().
Все элементы, возвращённые create, добавляются к группе persistedItems. Элементы в этой группе остаются экземплизированными, когда не ссылаются ни на какое представление.
insert(int index, jsdict data, array groups = undefined)
Создаёт новую запись по индексу index в DelegateModel со значениями из data, соответствующими ролям в модели, назначенной DelegateModel::model.
Если индекс не указан, данные добавляются в конец модели.
Дополнительный параметр groups определяет группы, к которым должна принадлежать новая запись; если он не указан, это равно группе, на которой был вызван insert.
Данные, вставленные в DelegateModel, позже могут быть объединены с существующей записью в DelegateModel::model с помощью функции resolve(). Это можно использовать для создания элементов-заполнителей, которые позже будут заменены фактическими данными.
addGroups(int index, int count, stringlist groups)
Добавляет count элементов, начиная с индекса index, в groups.
object get(int index)
Возвращает javascript-объект, описывающий элемент по индексу index в группе.
Возвращаемый объект содержит ту же информацию, которая доступна делегату из DelegateModel, а также модели для этого элемента. Он имеет свойства:
- model Данные модели элемента. Это то же самое, что и свойство контекста модели в делегате
- groups Список имён групп, членами которых является элемент. Это свойство может быть изменено для изменения членства элемента.
- inItems Является ли элемент частью группы items. Запись в это свойство добавит или удалит элемент из группы.
- itemsIndex Индекс элемента в группе items.
- in<GroupName> Является ли элемент частью динамической группы groupName. Запись в это свойство добавит или удалит элемент из группы.
- <groupName>Index Индекс элемента в динамической группе groupName.
- isUnresolved Является ли элемент связанным с индексом в модели, назначенной DelegateModel::model. Возвращает true, если элемент не связан с моделью, и false, если связан.
move(var from, var to, int count)
Перемещает count элементов из позиции from в группу to.
Примечание: DelegateModel действует как прокси-модель: она хранит делегаты в другом порядке, чем базовая модель. Любые последующие изменения в базовой модели не отменят произведённую вами перестановку с помощью этой функции.
Удаляет count элементов, начиная с индекса index из группы.
removeGroups(int index, int count, stringlist groups)
Удаляет count элементов, начиная с индекса index, из групп groups.
Связывает неразрешённый элемент в позиции from с элементом в DelegateModel::model с индексом to.
Неразрешённые элементы — это записи, данные которых были вставлены в DelegateModelGroup, а не получены из индекса DelegateModel::model. Разрешение элемента заменит элемент в целевом индексе неразрешённым элементом. Разрешённый элемент будет отражать данные исходной модели в его связанном индексе и будет перемещаться, когда этот индекс перемещается, как любой другой элемент.
Если новый элемент заменяется в DelegateModelGroup в обработчике onChanged(), его вставка и замена будут сообщены представлениям как атомарная операция, создавая впечатление, что содержимое модели не изменилось, или если неразрешённый и модельной элементы не являются смежными, то ранее неразрешённый элемент просто переместился.
setGroups(int index, int count, stringlist groups)
Устанавливает группы, к которым принадлежат count элементов, начиная с индекса index.
setGroups(int index, int count, stringlist groups)
Устанавливает группы, к которым принадлежат count элементов, начиная с индекса index.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qml-qtqml-models-delegatemodelgroup.html