Package QML Type▲
-
Import Statement: import QtQml.Models
-
Since:: Qt 5.1
-
Group: Package is part of qtquick-models
Detailed Description▲
The Package type is used in conjunction with DelegateModel to enable delegates with a shared context to be provided to multiple views.
Any item within a Package may be assigned a name via the Package.name attached property.
The example below creates a Package containing two named items; list and grid. The third item in the package (the Rectangle) is parented to whichever delegate it should appear in. This allows an item to move between views.
Package
{
Text
{
id
:
listDelegate; width
:
parent.width; height
:
25
; text
:
'Empty'
; Package.name
:
'list'
}
Text
{
id
:
gridDelegate; width
:
parent.width /
2
; height
:
50
; text
:
'Empty'
; Package.name
:
'grid'
}
Rectangle
{
id
:
wrapper
width
:
parent.width; height
:
25
color
:
'lightsteelblue'
Text
{
text
:
display; anchors.centerIn
:
parent
}
state
:
root.upTo &
gt; index
? 'inGrid'
:
'inList'
states
:
[
State
{
name
:
'inList'
ParentChange
{
target
:
wrapper; parent
:
listDelegate }
}
,
State
{
name
:
'inGrid'
ParentChange
{
target
:
wrapper; parent
:
gridDelegate
x
:
0
; y
:
0
; width
:
gridDelegate.width; height
:
gridDelegate.height
}
}
]
transitions
:
[
Transition
{
ParentAnimation
{
NumberAnimation
{
properties
:
'x,y,width,height'
; duration
:
300
}
}
}
]
}
}
These named items are used as the delegates by the two views who reference the special DelegateModel::parts property to select a model which provides the chosen delegate.
DelegateModel
{
id
:
visualModel
delegate
:
Delegate {}
model
:
myModel
}
ListView
{
id
:
lv
height
:
parent.height/
2
width
:
parent.width
model
:
visualModel.parts.list
}
GridView
{
y
:
parent.height/
2
height
:
parent.height/
2
width
:
parent.width
cellWidth
:
width
/
2
cellHeight
:
50
model
:
visualModel.parts.grid
}
Package is part of QtQml.Models since version 2.14 and part of QtQuick since version 2.0. Importing Package via QtQuick is deprecated since Qt 5.14.