是否可以从DelegateModel创建QML项目?
Here is a example DelegateModel:
DelegateModel
{
id: delegateModel
model: ListModel
{
ListElement { name: "#FAFAFA"; test: "object1" }
ListElement { name: "#000000"; test: "object2" }
}
delegate: Rectangle
{
objectName: test
width: 50
height: 50
color: name
}
Component.onCompleted:
{
Utils.var_dump(items,3)
items.create(0)
Utils.var_dump(items.get(0),3)
}
}
The Result should look like this:
Rectangle
{
objectName: "object1"
width: 50
height: 50
color: "#FAFAFA"
}
Rectangle
{
objectName: "object2"
width: 50
height: 50
color: "#000000"
}
对于每个ListElement,都有一个创建的委托,其中包含插入的ListElement数据 .
1 回答
您可以使用任何可用于实例化
Model
(View
)的内容例如,您可以将其用作
ListView
,GridView
或Repeater
的模型 . 由于模型自己提供委托,因此您无需在View
中指定实例化它的任何委托 .如果使用
create(index)
-Method,将创建委托,但没有父委托,因此不会显示委托 . 因此,您需要设置父级,以显示它:您需要注意,
DelegateModel
(没有Package
和Parts
)不能在多个视图中使用,因为每个条目/委托只能同时实例化一次 . 如果你想拥有它,可以考虑使用QSortFilterProxyModel过滤内容,并根据需要使用尽可能多的Views
来提供自己的代理 .