如何顯示例如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在動態創建的表中顯示上標動態值