如何将自定义对象分配给 sourceItem?
How to assign custom object to sourceItem?
A 想根据 if 条件可视化 MapQuickItem。
我有两个自定义对象 ClusterMarker,它是一个矩形对象和 PromotionMarker,它是一个图像对象。我想使用 sourceItem 属性.
将它们分配给 MapQuickItem(它是 MapItemView 的委托)
这是我的做法:
MapItemView
{
id: promMarkersView
...
delegate: MapQuickItem
{
id: promMarkersDelegate
coordinate: QtPositioning.coordinate(lat, lon)
sourceItem: cntOfChilds ? ClusterMarker {id: c} : PromotionMarker {id: p}
...
}
}
但现在我遇到了两个错误。第一个指向 {id: c}
的第一个括号:Expected token ':',第二个指向 :
Unexpected token ':'
做这个赋值的正确方法是什么?
我不确定这是否是最好的方法,但似乎可行。
从组件动态创建项目:
...
sourceItem: index % 2 ? mapItemDelegate1.createObject() : mapItemDelegate2.createObject()
Component.onDestruction: sourceItem.destroy();
...
并将您的项目指定为组件,例如:
Component {
id: mapItemDelegate1
Rectangle {
color: "red"
width: 6
height: 6
}
}
Component {
id: mapItemDelegate2
Rectangle {
color: "blue"
radius: 2
width: 6
height: 6
}
}
最好的方法是使用 Loader
:
MapItemView {
id: promMarkersView
...
delegate: MapQuickItem {
id: promMarkersDelegate
coordinate: QtPositioning.coordinate(lat, lon)
sourceItem: Loader {
sourceComponent: cntOfChilds ? c : p
}
...
}
Component {
id: c
ClusterMarker {}
}
Component {
id: p
PromotionMarker {}
}
}
A 想根据 if 条件可视化 MapQuickItem。
我有两个自定义对象 ClusterMarker,它是一个矩形对象和 PromotionMarker,它是一个图像对象。我想使用 sourceItem 属性.
将它们分配给 MapQuickItem(它是 MapItemView 的委托)这是我的做法:
MapItemView
{
id: promMarkersView
...
delegate: MapQuickItem
{
id: promMarkersDelegate
coordinate: QtPositioning.coordinate(lat, lon)
sourceItem: cntOfChilds ? ClusterMarker {id: c} : PromotionMarker {id: p}
...
}
}
但现在我遇到了两个错误。第一个指向 {id: c}
的第一个括号:Expected token ':',第二个指向 :
Unexpected token ':'
做这个赋值的正确方法是什么?
我不确定这是否是最好的方法,但似乎可行。
从组件动态创建项目:
...
sourceItem: index % 2 ? mapItemDelegate1.createObject() : mapItemDelegate2.createObject()
Component.onDestruction: sourceItem.destroy();
...
并将您的项目指定为组件,例如:
Component {
id: mapItemDelegate1
Rectangle {
color: "red"
width: 6
height: 6
}
}
Component {
id: mapItemDelegate2
Rectangle {
color: "blue"
radius: 2
width: 6
height: 6
}
}
最好的方法是使用 Loader
:
MapItemView {
id: promMarkersView
...
delegate: MapQuickItem {
id: promMarkersDelegate
coordinate: QtPositioning.coordinate(lat, lon)
sourceItem: Loader {
sourceComponent: cntOfChilds ? c : p
}
...
}
Component {
id: c
ClusterMarker {}
}
Component {
id: p
PromotionMarker {}
}
}