Qt QML Models QML Types
|
封装了一个Model和Delegate |
|
|
封装了visual data items的filtered set |
|
|
实例化了一个 QItemSelectionModel to be used in conjunction with a QAbstractItemModel and any view supporting it |
|
|
Defines a data item in a ListModel |
|
|
Defines a free-form list data source |
|
|
Defines a set of items to be used as a model |
#实例目的: 主要说明如何在一个ListView中使用DelegateModel
#适用场景: 1 当QAbstractItemModel的子类作为model时,使用DelegateModel控制和访问modelIndex非常方便;
# 2 结合Package向多个views提供代理
# 3 结合DelegateModelGroup用来对代理的items进行排序和过滤 #除以上三个场景下一般不创建DelegateModel
Example1:
import QtQuick 2.0
import QtQml.Models 2.2
Rectangle {
width: 200; height: 100
DelegateModel {
id: visualModel
model: ListModel {
ListElement { name: "Apple" }
ListElement { name: "Orange" }
}
delegate: Rectangle {
anchors.centerIn: visualModel
height: 25
width: 100
Text { text: "Name: " + name}
}
}
ListView {
anchors.fill: parent
model: visualModel
}
}
This property holds a delegate model's group definitions.
Groups define a sub-set of the items in a delegate model and can be used to filter a model.
For every group defined in a DelegateModel two attached properties are added to each delegate item. The first of the form DelegateModel.inGroupNameholds whether the item belongs to the group and the second DelegateModel.groupNameIndex holds the index of the item in that group.
The following example illustrates using groups to select items in a model.
import QtQuick 2.0
import QtQml.Models 2.2
Rectangle {
width: 200; height: 100
DelegateModel {
id: visualModel
model: ListModel {
ListElement { name: "Apple" }
ListElement { name: "Orange" }
}
groups: [
DelegateModelGroup { name: "selected" }
]
delegate: Rectangle {
id: item
height: 25
width: 200
Text {
text: {
var text = "Name: " + name
if (item.DelegateModel.inSelected)
text += " (" + item.DelegateModel.selectedIndex + ")"
return text;
}
}
MouseArea {
anchors.fill: parent
onClicked: item.DelegateModel.inSelected = !item.DelegateModel.inSelected
}
}
}
ListView {
anchors.fill: parent
model: visualModel
}
}
浙公网安备 33010602011771号