Qt 从DelegateModel创建QML项
是否可以从DelegateModel中创建QML项 下面是一个示例DelegateModel:Qt 从DelegateModel创建QML项,qt,qml,Qt,Qml,是否可以从DelegateModel中创建QML项 下面是一个示例DelegateModel: DelegateModel { id: delegateModel model: ListModel { ListElement { name: "#FAFAFA"; test: "object1" } ListElement { name: "#000000"; test: "object2" } } delegate: Re
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)
}
}
Rectangle
{
objectName: "object1"
width: 50
height: 50
color: "#FAFAFA"
}
Rectangle
{
objectName: "object2"
width: 50
height: 50
color: "#000000"
}
结果应如下所示:
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)
}
}
Rectangle
{
objectName: "object1"
width: 50
height: 50
color: "#FAFAFA"
}
Rectangle
{
objectName: "object2"
width: 50
height: 50
color: "#000000"
}
对于每个ListElement,都有一个已创建的委托,其中包含插入的ListElement数据。您可以使用任何可用于实例化<代码>模型(查看) 例如,您可以将其用作
列表视图
、网格视图
或中继器
的模型。由于模型本身提供委托,因此不需要在视图
中指定实例化该委托的任何委托
Column {
Repeater {
model: delegateModel
// delegate: ... <--- Nothing here! Uses the delegate from the Model.
}
}
需要注意的是,DelegateModel
(没有包
和部分
)不能在多个视图中使用,因为每个条目/委托只能在同一时间实例化一次。如果你想要这个,
考虑使用A来过滤这些东西,并使用尽可能多的<代码>视图>代码>,根据需要提供自己的委托。