blob: 6b8d3d6fb40fc399d0fb78317f8e7ef7d3d96e82 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
import Qt 4.6
Rect {
width: 600; height: 300; color: "white"
// MyPets model is defined in dummydata/MyPetsModel.qml
// The viewer automatically loads files in dummydata/* to assist
// development without a real data source.
// This one contains my pets.
// Define a delegate component. A component will be
// instantiated for each visible item in the list.
Component {
id: PetDelegate
Item {
id: Wrapper
width: 200; height: 50
VerticalPositioner {
Text { text: 'Name: ' + name }
Text { text: 'Type: ' + type }
Text { text: 'Age: ' + age }
}
}
}
// Define a highlight component. Just one of these will be instantiated
// by each ListView and placed behind the current item.
Component {
id: PetHighlight
Rect { color: "#FFFF88" }
}
// Show the model in three lists, with different currentItemPositioning.
// currentItemPositioning determines how the list behaves when the
// current item changes. Note that the second and third ListView
// set their currentIndex to be the same as the first, and that
// the first ListView is given keyboard focus.
// The default mode, Free, allows the currentItem to move freely
// within the visible area. If it would move outside the visible
// area, the view is scrolled to keep it visible.
// Snap currentItemPositioning attempts to keep the current item
// aligned with the snapPosition by scrolling the view, however the
// items will not scroll beyond the beginning or end of the view.
// SnapAuto currentItemPositioning always keeps the current item on
// the snapPosition by scrolling the view. It also automatically
// sets the current item as is scrolled with the mouse. Note
// that the first ListView sets its currentIndex to be equal to
// the third ListView's currentIndex. By flicking List3 with
// the mouse, the current index of List1 will be changed.
ListView {
id: List1
width: 200; height: parent.height
model: MyPetsModel; delegate: PetDelegate
highlight: PetHighlight; currentIndex: List3.currentIndex
focus: true
}
ListView {
id: List2
x: 200; width: 200; height: parent.height
model: MyPetsModel; delegate: PetDelegate; highlight: PetHighlight
currentItemPositioning: "Snap"; snapPosition: 125
currentIndex: List1.currentIndex
}
ListView {
id: List3
x: 400; width: 200; height: parent.height
model: MyPetsModel; delegate: PetDelegate
currentItemPositioning: "SnapAuto"; snapPosition: 125
currentIndex: List1.currentIndex
children: [
// Position a static highlight rather than a normal highlight so that
// when the view is flicked, the highlight does not move.
// By positioning the highlight at the same position as the snapPosition
// the item under the highlight will always be the current item.
// Note that we specify the 'children' property. This is because
// the default property of a ListView is 'delegate'.
Rect {
y: 125; width: 200; height: 50
color: "#FFFF88"; z: -1
}
]
}
}
|