提供一种自带过滤和排序的 DelegateModel.
SortFilterModel 提供自带过滤和排序的 DelegateModel,SortFilterModel 中的特定函数控制了
其中列表中每个项的显示和隐藏,通常和控件中的搜索功能绑定。
一般的 SortFilterModel 用法如下:
Rectangle {
width: 200; height: 100
id: visualModel
model: ListModel {
ListElement { name: "Apple" }
ListElement { name: "Orange" }
}
delegate: Rectangle {
height: 25
width: 100
Text { text: "Name: " + name}
}
}
ListView {
anchors.fill: parent
model: visualModel
}
}
提供一种自带过滤和排序的 DelegateModel.
Definition SortFilterModel.qml:6
上述示例不带任何排序和过滤,对上述代码修改可实现特定情况的过滤,例如下述代码过滤 type 1 类型的元素。
Rectangle {
width: 200; height: 100
id: visualModel
model: ListModel {
ListElement { type: 1; name: "Apple" }
ListElement { type: 2; name: "Orange" }
}
delegate: Rectangle {
height: 25
width: 100
Text { text: "Name: " + name}
}
return item.type === 1
}
}
ListView {
anchors.fill: parent
model: visualModel
}
}
var filterAcceptsItem
filterAcceptsItem 函数用于进行视图项的过滤。
Definition SortFilterModel.qml:11
对于多个 type == 1 的元素时,可以通过 lessThan 函数对过滤出的元素进行排序,如下代码:
Rectangle {
width: 200; height: 100
id: visualModel
model: ListModel {
ListElement { type: 1; prior: 2; name: "Apple" }
ListElement { type: 2; prior: 1; name: "Coconut" }
ListElement { type: 2; prior: 1; name: "Orange" }
}
delegate: Rectangle {
height: 25
width: 100
Text { text: "Name: " + name}
}
return item.type === 1
}
return item1.prior < item2.prior
}
}
ListView {
anchors.fill: parent
model: visualModel
}
}
var lessThan
lessThan 函数用于排序。
Definition SortFilterModel.qml:9