Тип QML DelegateModelGroup
Инкапсулирует отфильтрованный набор элементов визуальных данных Подробнее...
| Заявление об импорте: | import QtQml.Models 2.2 |
Свойства
- count : int
- includeByDefault : bool
- name : string
Сигналы
- void changed(array removed, array inserted)
Методы
- void addGroups(int index, int count, stringlist groups)
- void create(jsdict data, array groups)
- void create(int index, jsdict data, array groups)
- void create(int index)
- object get(int index)
- void insert(jsdict data, var groups)
- void insert(int index, jsdict data, array groups)
- void move(var from, var to, int count)
- void remove(int index, int count)
- void removeGroups(int index, int count, stringlist groups)
- void resolve(int from, int to)
- void setGroups(int index, int count, stringlist groups)
- void setGroups(int index, int count, stringlist groups)
Подробное описание
Тип DelegateModelGroup предоставляет способ доступа к данным модели элементов делегата DelegateModel, а также сортировки и фильтрации этих элементов делегата.
Начальный набор создаваемых элементов делегата в DelegateModel представлен группой items, которая обычно напрямую отражает содержимое модели, назначенной свойству DelegateModel::model. Этот набор может быть изменён на содержимое любого другого члена DelegateModel::groups путём присвоения имени этой DelegateModelGroup свойству DelegateModel::filterOnGroup.
Данные элемента в DelegateModelGroup можно получить с помощью функции get(), которая возвращает информацию о членстве в группе и индексах, а также данные модели. В сочетании с функцией move() это можно использовать для реализации сортировки представлений, с помощью remove() для фильтрации элементов из представления или с setGroups() и делегатами пакета для категоризации элементов в разных представлениях.
Данные из моделей можно дополнить, вставив данные непосредственно в DelegateModelGroup с помощью функции insert(). Это можно использовать для введения имитационных элементов в представление или элементов-заполнителей, которые позже разрешаются на реальные данные модели, когда они становятся доступными.
Элементы делегата также можно создавать непосредственно из DelegateModelGroup с помощью функции create(), что позволяет использовать DelegateModel без соответствующего типа представления или выбирать определённые элементы, которые должны быть созданы независимо от того, находятся ли они в данный момент в видимой области представления.
Примечание: Этот тип также доступен как VisualDataGroup в модуле Qt QML по причинам совместимости.
См. также Учебник по динамическому упорядочению QML.
Документация по свойству
count : int
Это свойство содержит количество элементов в группе.
includeByDefault : bool
Это свойство содержит значение, указывающее, назначаются ли новые элементы этой группе по умолчанию.
name : string
Это свойство содержит имя группы.
Каждая группа в модели должна иметь уникальное имя, начинающееся с малой буквы.
Документация по сигналу
void changed(array removed, array inserted)
Этот сигнал излучается, когда элементы удалены из или добавлены в группу.
Каждый объект в массивах removed и inserted имеет два значения: index первого вставленного или удалённого элемента и count количества последовательных вставленных или удалённых элементов.
Каждый индекс корректируется для предыдущих изменений, при этом все удалённые элементы предшествуют любым вставленным.
Соответствующий обработчик — onChanged.
Документация по методу
void addGroups(int index, int count, stringlist groups)
Добавляет count элементов, начиная с index, в groups.
void create(jsdict data, array groups = undefined)
Возвращает ссылку на созданный элемент в группе по индексу index.
Если предоставлен объект data, он будет вставлен по индексу index, и будет возвращён элемент, ссылающийся на эту новую запись. Опциональный параметр groups идентифицирует группы, к которым должна принадлежать новая запись; если он не указан, он равен группе, на которой был вызван метод create().
Все элементы, возвращаемые методом create, добавляются в группу persistedItems. Элементы в этой группе остаются созданными, когда на них не ссылается ни одно представление.
void create(int index, jsdict data, array groups = undefined)
Возвращает ссылку на созданный элемент в группе по индексу index.
Если предоставлен объект data, он будет вставлен по индексу index, и будет возвращён элемент, ссылающийся на эту новую запись. Опциональный параметр groups идентифицирует группы, к которым должна принадлежать новая запись; если он не указан, он равен группе, на которой был вызван метод create().
Все элементы, возвращаемые методом create, добавляются в группу persistedItems. Элементы в этой группе остаются созданными, когда на них не ссылается ни одно представление.
void create(int index)
Возвращает ссылку на созданный элемент в группе по индексу index.
Если предоставлен объект data, он будет вставлен по индексу index, и будет возвращён элемент, ссылающийся на эту новую запись. Опциональный параметр groups идентифицирует группы, к которым должна принадлежать новая запись; если он не указан, он равен группе, на которой был вызван метод create().
Все элементы, возвращаемые методом create, добавляются в группу persistedItems. Элементы в этой группе остаются созданными, когда на них не ссылается ни одно представление.
object get(int index)
Возвращает javascript-объект, описывающий элемент по индексу index в группе.
Возвращаемый объект содержит ту же информацию, которая доступна делегату из DelegateModel, а также модель для этого элемента. У него есть свойства:
- model Данные модели элемента. Это то же самое, что и свойство контекста модели в делегате
- groups Список имён групп, членом которых является элемент. Это свойство можно изменять для изменения членства элемента.
- inItems Принадлежит ли элемент группе items. Запись в это свойство добавит или удалит элемент из группы.
- itemsIndex Индекс элемента в группе items.
- in<GroupName> Принадлежит ли элемент динамической группе имя группы. Запись в это свойство добавит или удалит элемент из группы.
- <groupName>Index Индекс элемента в динамической группе имя группы.
- isUnresolved Является ли элемент связанным с индексом в модели, назначенной DelegateModel::model. Возвращает true, если элемент не связан с моделью, и false — если связан.
void insert(jsdict data, var groups = undefined)
Создаёт новую запись в DelegateModel по индексу index со значениями из data, соответствующими ролям в модели, назначенной DelegateModel::model.
Если индекс не указан, данные добавляются в конец модели.
Необязательный параметр groups определяет группы, к которым должна принадлежать новая запись. Если не указано, используется группа, к которой был вызван метод insert.
Данные, вставленные в DelegateModel, могут быть позже объединены с существующей записью в DelegateModel::model с помощью функции resolve(). Это можно использовать для создания элементов-заменителей, которые позже будут заменены фактическими данными.
void insert(int index, jsdict data, array groups = undefined)
Создаёт новую запись в DelegateModel по индексу index со значениями из data, соответствующими ролям в модели, назначенной DelegateModel::model.
Если индекс не указан, данные добавляются в конец модели.
Необязательный параметр groups определяет группы, к которым должна принадлежать новая запись. Если не указано, используется группа, к которой был вызван метод insert.
Данные, вставленные в DelegateModel, могут быть позже объединены с существующей записью в DelegateModel::model с помощью функции resolve(). Это можно использовать для создания элементов-заменителей, которые позже будут заменены фактическими данными.
void move(var from, var to, int count)
Перемещает count элементов, начиная с позиции from, в новую позицию to в группе.
void remove(int index, int count)
Удаляет count элементов, начиная с индекса index из группы.
void removeGroups(int index, int count, stringlist groups)
Удаляет count элементов, начиная с индекса index из групп groups.
void resolve(int from, int to)
Связывает неразрешённый элемент по индексу from с элементом в DelegateModel::model по индексу to.
Неразрешённые элементы — это записи, данные которых были вставлены в DelegateModelGroup, вместо того чтобы быть получены из индекса DelegateModel::model. Разрешение элемента замещает элемент в целевом индексе неразрешённым элементом. Разрешённый элемент отражает данные исходной модели в связанном индексе и перемещается, когда этот индекс перемещается, как и любой другой элемент.
Если новый элемент заменяется в DelegateModelGroup в обработчике onChanged(), его вставка и замена будут сообщены представлениям как атомарная операция, создавая видимость того, что содержимое модели не изменилось, или, если неразрешённый и модельный элементы не являются смежными, что ранее неразрешённый элемент просто переместился.
void setGroups(int index, int count, stringlist groups)
Устанавливает группы, к которым принадлежат count элементов, начиная с индекса index.
void 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.9/qml-qtqml-models-delegatemodelgroup.html