DelegateModelGroup QML 类型

封装了一组筛选过的可视数据项。 更多信息...

导入语句import QtQml.Models

属性

信号

  • changed(array removed, array inserted)

方法

  • addGroups(int index, int count, stringlist groups)
  • create(int index)
  • create(int index, jsdict data, array groups)
  • create(jsdict data, array groups)
  • object get(int index)
  • insert(int index, jsdict data, array groups)
  • insert(jsdict data, var groups)
  • 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)

详细描述

DelegateModelGroup 类型提供了一种方法来引用 DelegateModel 的委托项数据,以及排序和过滤这些委托项。

DelegateModel 中的可实例化的委托项初始集合由其 items 组表示,通常直接反映分配给 DelegateModel::model 的模型的内容。此集合可更改为分配给 DelegateModel::groups 的任何其他成员的内容,通过将该DelegateModelGroup的 name 分配给 DelegateModel::filterOnGroup 属性。

可以使用 get() 函数访问DelegateModelGroup中的项目数据,它返回有关组成员资格和索引以及模型数据的信息。结合使用 move() 函数,这可以实现视图排序,使用 remove() 从视图中过滤项目,或使用 setGroups() 和 Package 委托将项目分类到不同的视图中。只有当组不重叠时,才能独立地对不同的组进行排序。移动一个组中的项也会将其移动到它所属的所有其他组中。

可以使用 insert() 函数直接在DelegateModelGroup中插入数据,以补充模型数据。这可以用来向视图中引入模拟项,或将占位符项在可用时解析为实际模型数据。

也可以使用 create() 函数直接从DelegateModelGroup中实例化委托项,这使得在没有伴随视图类型的情况下使用 DelegateModel 变得可能,或者可以选择要实例化的特定项,无论它们目前是否在视图的可见区域内。

另请参阅QML Dynamic View Sorting 教程

属性文档

count : int [只读]

此属性包含组中项的数量。


includeByDefault : bool

此属性表示是否默认将新项分配到此组。


name : string

此属性包含组的名称。

模型中的每个组都必须有一个唯一的名称,且以小写字母开头。


信号文档

changed(array removed, array inserted)

当从组中移除或插入项时发射此信号。

removedinserted 数组中的每个对象都有两个值;第一个插入或移除项的 index 和连续插入或移除项的 count

每个索引都根据先前的更改进行了调整,所有先前的移除项都位于任何插入项之前。

注意:相应的处理程序是 onChanged


方法文档

insert(int index, jsdict data, array groups = undefined)

insert(jsdict data, var groups = undefined)

DelegateModel 中创建一个新条目,其值为来自 data 且对应于分配给 DelegateModel::model 的模型的角色。

如果没有提供索引,则数据会被追加到模型中。

可选的 groups 参数指定新的条目应属于的组,如果未指定,则等于调用的插入操作的组。

插入到 DelegateModel 中的数据可以稍后使用 resolve() 函数与 DelegateModel::model 中的现有条目合并。这可以用于创建稍后被实际数据替换的占位符项目。


create(int index)

create(int index, jsdict data, array groups = undefined)

create(jsdict data, array groups = undefined)

返回对组中 index 处实例化项目的引用。

如果提供了 data 对象,它将被插入到 index 处,并返回引用此新条目的项。可选的 groups 参数指定新条目应属于的组,如果未指定,则等于调用 create() 方法时所在的组。

由 create 返回的所有项目都添加到 persistedItems 组。当项目未由任何视图引用时,该组中的项目保持实例化。


addGroups(int index, int count, stringlist groups)

index 处开始的 count 项添加到 groups


object get(int index)

返回一个描述组中 index 处项目的javascript对象。

返回的对象包含与附加到 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)

将组 from 中的 count 向组 to 新位置移动。

注意: DelegateModel 作为代理模型:它在 底层模型 中它们具有不同的顺序中保留代理。对底层模型进行的任何后续更改都不会撤消通过此函数执行的任何重新排序。


remove(int index, int count)

从group中移除从index开始的count个项。


removeGroups(int index, int count, stringlist groups)

groups中移除从index开始的count个项。


resolve(int from, int to)

将 unresolved 项的索引 fromDelegateModel::model 中索引 to 的项绑定。

Unresolved 项是指其数据已被插入DelegateModelGroup 而不是从DelegateModel::model 索引导出的项。解决项将用未解决项替换目标索引处的项。已解决的项将反映其绑定索引处的源模型的数据,并像任何其他项一样移动。

如果在DelegateModelGroup的onChanged()处理程序中替换了新的项,则其插入和替换将以原子操作与视图通信,创建出模型内容似乎没有变化的印象,或者如果未解决的项和模型项不相邻,则先前未解决的项已简单地移动。


setGroups(int index, int count, stringlist groups)

更改从index开始的count个项的组成员资格。这些项将从它们现有的组中删除并添加到groups中。


© 2024 The Qt Company Ltd. 本文档的贡献在此处的版权属于各自的所有者。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3许可的。Qt及其标志是芬兰及其它全球国家的商标。所有其他商标属于其各自的所有者。