首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt/Qml:映射元素的中继器与MapItemView

Qt/Qml:映射元素的中继器与MapItemView
EN

Stack Overflow用户
提问于 2017-08-07 15:00:40
回答 1查看 1.5K关注 0票数 1

我想用映射元素填充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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 15:41:38

为此,您应该使用MapItemView。只有在创建Repeater时才能使用Map,如果随后在模型中添加元素,则不会向地图添加委托。

它最初与Repeater一起工作,但之后不起作用,这是因为:

  • Repeater的父母,他的委托给他的父母,也就是Map
  • 然后,Map对象在创建其子项时(在相当于Component.onCompleted的c++函数中)扫描一次子项。
  • 在此扫描中,MapItem-derived对象的子对象将添加到映射中,就像手动调用Map.addMapItem()时一样。
  • 在此之后由Repeater创建的委托仅仅是Map的父级,而不是真正的“添加”。

由于MapItemView知道Map,所以它可以在创建委托时将它们添加到Map中。

MapItemView的局限性之一是它只适用于QAbstractItemModel并导出。这意味着它可以使用ListModel或c++模型,但不能使用像js数组或整数这样的“哑”模型作为模型。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45550033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档