ListModel是一个简单的容器,包含了ListElement定义,每个ListElement包含数据role。这些内容能被动态或显式的定义在QML中。
本文: https://www.lovejia.win/blog/article/ListModel.html
参考原文:http://doc.qt.io/qt-5/qml-qtqml-models-listmodel.html
参考译文:http://blog.163.com/chujb_chen/blog/static/10571112012226115451780/
属性说明
count : int
model的整个数据数目。
dynamicRoles : bool
默认情况下,所有role同一属性的类型是固定的,当dynamicRoles设置为true,不同role同一属性的类型可以不同。
改属性必须在添加数据前设置才有效,且必须在主线程设置
方法说明
append(jsobject dict)
加一个新的item到整个model列表的结尾,值在dict里
clear()
从model中删除所有的内容
object get(int index)
在model列表中按index返回item。
警告:返回对象不保证是有效的。它不应该被用于属性绑定。
insert(int index, jsobject dict)
添加一个新的item到model列表里指定的index位置,值在dict里,index必须是一个已经存在的项,或列表的最后一个(相当于append)。
move(int from, int to, int n)
把n个item从一个位置移到另一个位置。from和to的范围必须存在.
remove(int index, int count)
按index在model里删除内容。
set(int index, jsobject dict)
用dict里的值改变index指定的item。dict里没有表现的属性不被改变。
如果index等于count(),那么一个新的item会被append到列表里。否则index必须是一个列表的元素。
setProperty(int index, string property, variant value)
把列表中的index位置的item的改property 为value
index必须是列表中的元素。
sync()
从worker script修改后,写任何为保存的改变到model列表。
功能简述
ListModel是一个简单的容器,包含了ListElement定义,每个ListElement包含数据role。这些内容能被动态或显式的定义在QML中。
model的元素数目可以通过它的count属性来获得。提供了许多熟悉的方式来操作model的上下文,包括append(),insert(),move(),remove()和set()。这些方法接受字典作为它们的参数;这些被model翻译为ListElement对象。
通过model使用setProperty()方法来操作元素,这方法允许指定元素的role被设置和改变。
例
下面的例子显示了ListModel包含了3个元素,每个元素带有name和cost。
1 | import QtQuick 1.0 |
每个元素的Roles(properties)必须以小写字母开始,并被model中的所有元素共有。