DelegateModelGroup
ImportStatement: import QtQml.Models 2.0
Properties
count : int
includeByDefault: bool
name :string
Signals
voidchanged(array removed, array inserted)
Methods
voidaddGroups(int index, int count, stringlist groups)
voidcreate(jsdict data, array groups)
voidcreate(int index, jsdict data, array groups)
voidcreate(int index)
objectget(int index)
voidinsert(jsdict data, var groups)
voidinsert(int index, jsdict data, array groups)
voidmove(var from, var to, int count)
voidremove(int index, int count)
voidremoveGroups(int index, int count, stringlist groups)
voidresolve(int from, int to)
voidsetGroups(int index, int count, stringlist groups)
voidsetGroups(int index, int count, stringlist groups)
DetailedDescription
这个组件为DelegateModel's的具像实例提供了排序和过滤的方法。一个具像实例最初只在items组。它通常直接反映了分配给DelegateModel::model的模特内容。这种情况能被改变,通过在DelegateModel::groups添加新的DelegateModelGroup成员,然后分配
DelegateModelGroup的成员名到DelegateModel::filterOnGroup属性,我们就能对模特进行过滤。
具像实例的数据能使用get()访问。它能获得组成员的信息和模特数据的索引。联合move()后,便能在view中队模特进行排序。联合remove()能过滤出需要显示的实例。当然,如果与具像的Package组件联合,就能在不同的视图中显示模特。
在DelegateModelGroup中使用insert()方法,能直接补充模特列表的数据。这能用于模拟具像实例进入视图或为模特可用时决定实际模特数据的模特占位。
具像实例也能用create()方法直接创建实例。这可能用于没有响应视图类型的DelegateModel或挑选不管是否在可见区域都需要实例化的具像实例。
注意:因为兼容性问题,在QML中,这个组件等效于VisualDataGroup。
PropertyDocumentation
count : int
组中的成员数目。
includeByDefault: bool
新具像实例是否被默认分配到这个组。
name :string
组名,每个组的组名必须被定义且必须是唯一的,同时,组名需要以小写字母开始。.
SignalDocumentation
voidchanged(array removed, array inserted)
当实例被删除或插入这个组时,发射这个信号。removed和inserted参数都是有两个值的队列,第一个值是插入或移除的具像实例的索引,第二个值是插入或移除的连续具像实例的数目的计数。在删除所有实例前插入任何实例,每个索引都将调整之前的变化。这里文档看上去不是非常的清楚,译者尝试使用for(var i in removed)这样的方法打印参数数据,结果没有更多的翻译,读者如果需要使用该参数,需要自己测试一下。
MethodDocumentation
voidaddGroups(int index, int count, stringlist groups)
将本组内从index开始的count个实例添加到groups组中。添加后,实例依旧存在于本组。
voidcreate(jsdict data, array groups = undefined)
返回groups的index位置的实例的引用。如果data对象被提供,它将插入组的index位置然后返回这个新入口的实例的引用。可选的group参数指明了新实例属于那个组。如果未指定,则相当于本组ceate()函数被调用。调用这个方法产生的实例都被加入persistedItems组。persistedItems组的实例及时没有被视图引用,依然保留。译者不能确定当data没有提供时,是否创建了新实例。这个方法在大多数情况下不会使用。另外,这个方法没有给出index参数,对这个方法的炒作产生什么变化,译者无法确认。
void create(intindex, jsdict data, array groups = undefined)
返回groups的index位置的实例的引用。如果data对象被提供,它将插入组的index位置然后返回这个新入口的实例的引用。可选的group参数指明了新实例属于那个组。如果未指定,则相当于本组ceate()函数被调用。调用这个方法产生的实例都被加入persistedItems组。persistedItems组的实例及时没有被视图引用,依然保留。译者不能确定当data没有提供时,是否创建了新实例。这个方法在大多数情况下不会使用。
voidcreate(int index)
返回groups的index位置的实例的引用。如果data对象被提供,它将插入组的index位置然后返回这个新入口的实例的引用。可选的group参数指明了新实例属于那个组。如果未指定,则相当于本组ceate()函数被调用。调用这个方法产生的实例都被加入persistedItems组。persistedItems组的实例及时没有被视图引用,依然保留。译者不能确定当data没有提供时,是否创建了新实例。这个方法在大多数情况下不会使用。
objectget(int index)
返回本组的index位置的java脚步对象实例。
返回的对象包含DelegateModel关联模特的具像实例信息。它有下面的属性:
model 具像实例中的模特信息。
groups 具像实例所属的组的名字列表,这个属性可以被修改以改变实例所属的组。
inItems 是否属于item组,修改它可以加入或移除出items组。
in<GroupName>是否属于GroupName的动态组,修改它可以加入或移除相应动态组。
<groupName>Index具像实例在动态组的索引。
isUnresolved实例对象是否在DelegateModel::model的模型中绑定了索引。如果没有,则为真,否则为假。
voidinsert(jsdict data, var groups = undefined)
用data在DelegateModel中创建一个新的实例入口,同时data按照对应的角色,根据index插入DelegateModel::model的相应位置。如果index没有提供,则data添加到模特模型的最后。groups参数是可选的,它指明了新的实例所属的组,如果没有定义,则等同于本组的insert被调用。
插入到. DelegateModel的数据能在稍后于DelegateModel::model相应位置的数据使用resolve()方法合并,这个特点能用于先创建占位,然后用实际数据取代。
译者言:这个属性中的index的意义,应该接近与create。英文文档没有在create系列中描述模特模型,应该create只创建实例,不处理model。更细致,更具体,更可靠的信息,可在编程时通过试验获得。
voidinsert(int index, jsdict data, array groups = undefined)
用data在DelegateModel中创建一个新的实例入口,同时data按照对应的角色,根据index插入DelegateModel::model的相应位置。如果index没有提供,则data添加到模特模型的最后。groups参数是可选的,它指明了新的实例所属的组,如果没有定义,则等同于本组的insert被调用。
插入到. DelegateModel的数据能在稍后于DelegateModel::model相应位置的数据使用resolve()方法合并,这个特点能用于先创建占位,然后用实际数据取代。
译者言:这个属性中的index的意义,应该接近与create。英文文档没有在create系列中描述模特模型,应该create只创建实例,不处理model。更细致,更具体,更可靠的信息,可在编程时通过试验获得。
voidmove(var from, var to, int count)
在组中,从from位置移动count个实例到to位置。
voidremove(int index, int count)
从index这个索引,将count个实例移出本组。
voidremoveGroups(int index, int count, stringlist groups)
从index这个索引,将count个实例从groups这个组中移除。
voidresolve(int from, int to)
绑定from位置的具像实例到DelegateModel::model的to索引位置。我们有可能创建一个具像实例,但该实例可能是js数据建立的,和DelegateModel::model没有关系。我们使用该方法,就能用我们创建的实例取代DelegateModel::model的to位置的模特。绑定索引的实例能像其他实例那样移动,同时它反映了源模特模型中的模特数据。
如果一个新的实例在DelegateModelGroup中被取代,onChanged()句柄的插入和取代将作为一个原子操作和视图沟通。这样,创建的模特模型的显示不会变化,或未绑定的实例和模型实例不是在之前相邻,未绑定得实例只是简单的移动。
voidsetGroups(int index, int count, stringlist groups)
将本组中从index开始的count个对象实例放置到groups组中。设置后,本组中不再有该实例。