Qt/Qml:地图元素的 Repeater 与 MapItemView
Qt/Qml: Repeater vs. MapItemView for map elements
我想用 QAbstractListModel
中的地图元素(如 MapCircle 等)填充 Qml 地图。似乎有两个 Qml 工具适用于此,MapItemView
[1] 和 Repeater
[2]。 Repeater
更强大(例如,它允许嵌套模型)——那么有什么理由使用 MapItemView
而不是 Repeater
?
此致,
[1] http://doc.qt.io/qt-5/qml-qtlocation-mapitemview.html
[2]http://doc.qt.io/qt-5/qml-qtquick-repeater.html
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
您应该为此使用 MapItemView
。
使用 Repeater
仅在您创建 Map
时有效,如果您之后在模型中添加元素,则不会向地图添加委托。
它最初与 Repeater
一起工作但后来不工作的事实是因为:
Repeater
parent 是他的 parent 代表,即 Map
Map
object 然后在创建时扫描其 child 项目一次(在等同于 Component.onCompleted
的 c++ 函数中)
- 在此扫描后,
MapItem
派生的 object 的 children 被添加到地图中,就像手动调用 Map.addMapItem()
时一样
- 在那之后由
Repeater
创建的委托只是 parented 到 Map
而不是真正地 "added" 到它。
由于 MapItemView
知道 Map
它可以在创建委托时将委托添加到 Map
。
MapItemView
的局限之一是它仅适用于 QAbstractItemModel
和派生。这意味着它可以使用 ListModel
或 c++ 模型,但不能使用 "dumb" 模型,如 js 数组或整数模型。
我想用 QAbstractListModel
中的地图元素(如 MapCircle 等)填充 Qml 地图。似乎有两个 Qml 工具适用于此,MapItemView
[1] 和 Repeater
[2]。 Repeater
更强大(例如,它允许嵌套模型)——那么有什么理由使用 MapItemView
而不是 Repeater
?
此致,
[1] http://doc.qt.io/qt-5/qml-qtlocation-mapitemview.html
[2]http://doc.qt.io/qt-5/qml-qtquick-repeater.html
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
您应该为此使用 MapItemView
。
使用 Repeater
仅在您创建 Map
时有效,如果您之后在模型中添加元素,则不会向地图添加委托。
它最初与 Repeater
一起工作但后来不工作的事实是因为:
Repeater
parent 是他的 parent 代表,即Map
Map
object 然后在创建时扫描其 child 项目一次(在等同于Component.onCompleted
的 c++ 函数中)- 在此扫描后,
MapItem
派生的 object 的 children 被添加到地图中,就像手动调用Map.addMapItem()
时一样
- 在那之后由
Repeater
创建的委托只是 parented 到Map
而不是真正地 "added" 到它。
由于 MapItemView
知道 Map
它可以在创建委托时将委托添加到 Map
。
MapItemView
的局限之一是它仅适用于 QAbstractItemModel
和派生。这意味着它可以使用 ListModel
或 c++ 模型,但不能使用 "dumb" 模型,如 js 数组或整数模型。