如何显示例如http://doc.qt.io/qt-5/qtlocation-planespotter-example.html示例中的动态飞机列表? 我想添加和删除地图中的项目。并且还刷新每个更改的项目。 我需要在地图上显示QList或QAbstractItemModel中的对象作为MapQuickItem。如何显示MapQuickItem的动态列表?
1
A
回答
0
基于QList的属性或QAbstractListModel派生类都可以工作。
在QML方面,你会使用或者作为模型使用的Plane
类型作为其代表一个Repeater
,采取从model
手柄坐标
有点像这个
Map {
Repeater {
model: listOrModelFromCpp
delegate: Plane {
cooridinate: model.position // or model.modelData for a QList<QGeoCoordinate> as the listOrModelFromCpp
}
}
}
使用自定义QAbstractListModel
派生模型的优点是Repeater
可以单独创建和销毁Plane
项目,而基本列表将要求它在列表的计数更改时重新创建所有项目
1
正确的答案是:使用MapItemView :)
MapItemView {
model: planeModel
delegate: Plane { }
}
0
有两种方法用于地图动态处理项目: void addMapItem(MapItem item)
和void clearMapItems()
这里是我的项目的代码片段(我猜的,而自我记录):
function clearTargets()
{
map.clearMapItems();
}
function showPlaneItems(planeItemsToShow)
{
for (var idx = 0; idx < planeItemsToShow.length; idx++) {
var item = planeItemsToShow[idx];
var itemComponent = Qt.createComponent("qrc:/components/Plane.qml");
if (itemComponent.status == Component.Ready) {
var itemObject = itemComponent.createObject(map,
{
"planeName" : item["targetName"],
"coordinate" : QtPositioning.coordinate(item["targetLattitude"],
item["targetLongitude"])
}
);
if (itemObject != null) {
map.addMapItem(itemObject);
}
}
}
}
相关问题
- 1. 如何动态显示单词列表
- 2. 在列表框中显示动态列
- 3. 如何显示阵列动态
- 4. 如何从SSRS中的DataSet动态显示SubReports的列表?
- 5. 如何动态显示div部分中动态列的值?
- 6. 动态数据 - 如何显示列表中的主键字段
- 7. 如何在android的列表视图中动态显示textviews?
- 8. 如何动态显示数据表头?
- 9. 如何动态显示EditText?
- 10. 如何在反应中动态显示/隐藏项目列表
- 11. 如何在jQuery数据表中动态显示列标题
- 12. 如何让一列表根据请求动态显示jsp?
- 13. 如何使用动态数据显示复选框列表
- 14. 如何选择列表项并动态显示详细信息?
- 15. 如何在列动态显示列数据的Oracle SQL
- 16. 列表处于活动状态时不显示自动提示
- 17. PHP动态表显示
- 18. 动态引导程序列表未显示嵌套列表
- 19. 如何显示动态工具提示?
- 20. 在不同列中显示动态创建的列表
- 21. 如何显示在列表
- 22. 如何显示列表?
- 23. 如何显示动态数组的值?
- 24. 动态显示列中的项目?
- 25. jQuery自动完成插件(Jorn Zaefferer's) - 如何动态更改显示值列表?
- 26. PHP如何显示从动态列MySQL的
- 27. 如何动态显示/隐藏extjs Grid中的列?
- 28. 如何显示使用jquery动态添加列的总数
- 29. 如何动态选择列上的独立显示?
- 30. 如何使用javascript在动态创建的表中显示上标动态值