Hyn*_*rix 2 qt qml qtquick2 qtlocation
我想用QAbstractListModel. 似乎有两个 Qml 工具适合于此,MapItemView[1] 和Repeater[2]。更Repeater强大(例如,它允许嵌套模型) - 那么有什么理由使用 theMapItemView代替 a 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如果您之后在模型中添加元素,则不会将任何委托添加到 Map 中。
它首先起作用但之后不起作用的事实Repeater是因为:
Repeater他代表他的父母,这是MapMap对象在创建时会扫描其子项一次(在 C++ 函数中相当于Component.onCompleted)MapItem将添加到映射中,就像手动调用时一样Map.addMapItem()Repeater父级,Map但并未真正“添加”到其中。由于MapItemView知道它可以在创建委托时Map添加委托。Map
的限制之一MapItemView是它只能与QAbstractItemModel和派生一起使用。这意味着它可以与 aListModel或 c++ 模型一起使用,但不能与 js 数组或整数这样的“哑”模型一起使用。