我想用映射元素填充Qml (比如MapCircle,.)从一个QAbstractListModel。似乎有两个适合于此的Qml工具,MapItemView 1和Repeater 2。Repeater更强大(例如,它允许嵌套模型)--那么有什么理由使用MapItemView而不是Repeater呢?
致以敬意,
1
2
MapItemView来源:http://code.qt.io/cgit/qt/qtlocation.git/tree/src/location/declarativemaps/qdeclarativegeomapitemview.cpp
中继器来源:http://code.qt.io/cgit/qt/qtdeclarative.git/tree/src/quick/items/qquickrepeater.cpp
发布于 2017-08-07 15:41:38
为此,您应该使用MapItemView。只有在创建Repeater时才能使用Map,如果随后在模型中添加元素,则不会向地图添加委托。
它最初与Repeater一起工作,但之后不起作用,这是因为:
Repeater的父母,他的委托给他的父母,也就是MapMap对象在创建其子项时(在相当于Component.onCompleted的c++函数中)扫描一次子项。MapItem-derived对象的子对象将添加到映射中,就像手动调用Map.addMapItem()时一样。Repeater创建的委托仅仅是Map的父级,而不是真正的“添加”。由于MapItemView知道Map,所以它可以在创建委托时将它们添加到Map中。
MapItemView的局限性之一是它只适用于QAbstractItemModel并导出。这意味着它可以使用ListModel或c++模型,但不能使用像js数组或整数这样的“哑”模型作为模型。
https://stackoverflow.com/questions/45550033
复制相似问题