如何将自定义对象分配给sourceItem?

时间:2019-01-04 00:02:55

标签: qt qml qquickitem

A想可视化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}的第一个括号:预期标记':',第二个指向: 非预期的标记':'

进行此分配的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

我不确定这是否是最好的方法,但似乎可行。

从组件动态创建项目:

import { NgForm }   from '@angular/forms';
....
....
onSubmit(form: NgForm){
  console.log(form.value);
  var formData = new FormData();
  formData.append('mycustom', "custom");
  for(let eachField in form.value)
  {
    formData.append(eachField,form.value[eachField]);
  }
  console.log(formData);
}

并将您的项目指定为“组件”,例如:

...
sourceItem: index % 2 ? mapItemDelegate1.createObject() : mapItemDelegate2.createObject()
Component.onDestruction: sourceItem.destroy();
...

答案 1 :(得分:0)

最好的方法是使用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 {}
    }
}