如何在qt-qml中更改map上代理组件的颜色

如何在qt-qml中更改map上代理组件的颜色,qt,qml,maps,qqmlcomponent,Qt,Qml,Maps,Qqmlcomponent,我正在使用MapQuickItem作为map上的代理组件。我有三个部分。当我点击组件时,我想改变代表组件的颜色。其余的都是相同的颜色。如何只改变所选组件的颜色 Plugin { id: hereMaps name: "here" PluginParameter { name: "here.app_id"; value: "oBB4FivcP23m2UZQCj8K" } PluginParameter { name: "here.token"; value: "P

我正在使用MapQuickItem作为map上的代理组件。我有三个部分。当我点击组件时,我想改变代表组件的颜色。其余的都是相同的颜色。如何只改变所选组件的颜色

 Plugin
{
    id: hereMaps
    name: "here"
    PluginParameter { name: "here.app_id"; value: "oBB4FivcP23m2UZQCj8K" }
    PluginParameter { name: "here.token"; value: "P-D8XRRGeVt0YphUuOImeA" }
}

Map {
    id: map
    anchors.fill: parent
    activeMapType: supportedMapTypes[1];
    zoomLevel: 18
    plugin: hereMaps
    center: QtPositioning.coordinate(19.997454, 73.789803)

    MapItemView {
        id: markerItem
        model: [
            { id: "marker1", color: "red" },
            { id: "marker2", color: "red" },
            { id: "marker3", color: "red" }
        ]
        delegate: mapMarkerComponent
    }

    Component {
        id : mapMarkerComponent

        MapQuickItem {
            id: mapMarker
            coordinate: QtPositioning.coordinate(19.997454, 73.789803)

            sourceItem: Rectangle {

                id: handle
                color: modelData.color
                width: 40
                height: 40

                MouseArea {
                    drag.target: parent
                    anchors.fill: parent
                    onClicked: {

                        handle.color = "green"

                    }
                }
            }

            onCoordinateChanged: {
                console.log(modelData.id + ":" + coordinate);
            }
        }
    }
   }

最明显的方法是遍历所有标记并重置这些标记的颜色,然后更改单击标记的颜色。为此,请将单击的
更改为:

// switch to red if its green
if (handle.color == "#008000") {
    handle.color = "#ff0000";
    return;
}
// switch all markers to red
for(var marker in markerItem.children) {
    markerItem.children[marker].sourceItem.color = "#ff0000";
}
// switch clicked marker to green
handle.color = "#008000";

但是,如果要“选择”标记,这不是最佳解决方案(操纵颜色)。阅读QML()中的状态,并尝试对标记实现某种“正常”和“选定”状态。

此代码已经做到了:将单击标记的颜色从红色更改为绿色。。。更准确一点。你们想达到什么目的?当我点击那个矩形组件时,我想改变它的颜色。我的代码中有三个矩形组件。当我点击第一个矩形时,它变成绿色,另外两个是红色。当我点击第二个矩形时,我想改变第二个矩形的颜色,第一个和第三个变成红色。但在我的代码中,当我点击第二个矩形时,第一个也是绿色的。如何使第一个和第三个矩形变为红色,并且只点击矩形来变红得到了解决方案!非常感谢。