QML Dynamic View Ordering Tutorial 4 - Sorting Items▲
Drag and drop isn't the only way items in a view can be re-ordered, using a DelegateModel it is also possible to sort items based on model data. To do that we extend our DelegateModel instance like this:
Sélectionnez
DelegateModel
{
id
:
visualModel
property
var lessThan
:
[
function
(left, right) {
return left.
name
&
lt;
right.
name
}
,
function
(left, right) {
return left.
type &
lt;
right.
type }
,
function
(left, right) {
return left.
age &
lt;
right.
age }
,
function
(left, right) {
if (
left.
size ==
"Small"
)
return true
else if (
right.
size ==
"Small"
)
return false
else if (
left.
size ==
"Medium"
)
return true
else
return false
}
]
property
int
sortOrder
:
orderSelector.selectedIndex
onSortOrderChanged
:
items.setGroups(0
, items.count, "unsorted"
)
function
insertPosition(lessThan, item
) {
var lower =
0
var upper =
items.
count
while (
lower &
lt;
upper) {
var middle =
Math.floor
(
lower + (
upper -
lower) /
2
)
var result =
lessThan
(
item.
model,
items.get
(
middle).
model);
if (
result) {
upper =
middle
}