0%

ListModel属性说明

相关控件:GridView ListView

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import QtQuick 1.0  
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}

每个元素的Roles(properties)必须以小写字母开始,并被model中的所有元素共有。

------本文结束    感谢阅读------
你打赏你的,我分享我的!