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