QML Dynamic View Ordering Tutorial 2 - Dragging View Items▲
<Unknown command>contentspageQML Dynamic View Ordering Tutorial
Now that we have a visible list of items we want to be able to interact with them. We'll start by extending the delegate so the visible content can be dragged up and down the screen. The updated delegate looks like this:
Sélectionnez
Component
{
id
:
dragDelegate
MouseArea
{
id
:
dragArea
property
bool
held
:
false
anchors {
left
:
parent.left; right
:
parent.right }
height
:
content.height
drag.target
:
held ? content :
undefined
drag.axis
:
Drag.YAxis
onPressAndHold
:
held =
true
onReleased
:
held =
false
Rectangle
{
id
:
content
anchors {
horizontalCenter
:
parent.horizontalCenter
verticalCenter
:
parent.verticalCenter
}
width
:
dragArea.width; height
:
column.implicitHeight +
4
border.width
:
1
border.color
:
"lightsteelblue"
color
:
dragArea.held ? "lightsteelblue"
:
"white"
Behavior
on
color
{
ColorAnimation
{
duration
:
100
}
}
radius
:
2
states
:
State
{
when
:
dragArea.held
ParentChange
{
target
:
content; parent
:
root }
AnchorChanges
{
target
:
content
anchors {
horizontalCenter
:
undefined; verticalCenter
:
undefined }
}
}
Column
{
id
:
column
anchors {
fill
:
parent
; margins
:
2
}
Text
{
text
:
'Name: '
+
name
}
Text
{
text
:
'Type: '
+
type }
Text
{
text
:
'Age: '
+
age }
Text
{
text
:
'Size: '
+
size
}
}
}
}
}
Walkthrough▲
The major change here is the root item of the delegate is now a MouseArea which provides handlers for mouse events and will allow us to drag the delegate's content item. It also acts as a container for the content item which is important as a delegate's root item is positioned by the view and cannot be moved by other means.
Sélectionnez
MouseArea
{
id