地点列表(QML)

地点列表示例演示了如何使用 ListView 搜索并显示地点列表。

运行示例

要从 Qt Creator 运行示例,请打开 欢迎使用 模式并从 示例 中选择示例。有关更多信息,请访问 构建和运行示例

地点列表 示例演示了如何搜索某个区域内的地点列表并使用 ListView 显示结果。在这种情况下,进行了与 food 术语相关的地点搜索。

要编写一个将地点显示在列表中的 QML 应用程序,我们首先进行以下导入声明。

import QtQuick
import QtPositioning
import QtLocation

实例化一个 插件 实例。该 插件 实际上是地点数据来源的后端。根据插件类型,可能需要填写一些强制参数。最可能的 插件参数 形式是某种服务访问令牌,这在服务插件中有所记录。在这个片段中使用了 osm 插件,它不需要任何进一步参数。

Plugin {
    id: myPlugin
    name: "osm"
    //specify plugin parameters as necessary
    //PluginParameter {...}
    //PluginParameter {...}
    //...
}

接下来我们实例化一个 PlaceSearchModel,我们可以使用它来指定搜索参数并执行地点搜索操作。为了说明目的,在模型构造完成后调用了一次 update()。通常 update() 会响应用户动作,例如按钮点击。

PlaceSearchModel {
    id: searchModel

    plugin: myPlugin

    searchTerm: "food"
    searchArea: QtPositioning.circle(startCoordinate, 5000 /* 5 km radius */);

    Component.onCompleted: update()

}

最后,我们实例化一个 ListView 来显示模型找到的搜索结果。使用内联代理,并假设每个搜索结果都是 类型 PlaceSearchResult。因此假设我们始终可以访问 place 角色,其他搜索结果类型可能不具有 place 角色

ListView {
    anchors.fill: parent
    model: searchModel
    delegate: Component {
        Row {
            spacing: 5
            Marker { height: parent.height }
            Column {
                Text { text: title; font.bold: true }
                Text { text: place.location.address.text }
            }
        }
    }
}

示例项目 @ code.qt.io

© 2024 The Qt Company Ltd. 本文档贡献的文档版权为各自所有者。本提供的文档根据自由软件基金会发布的 GNU 自由文档许可证 version 1.3 的条款进行许可。Qt 和相应标志是 The Qt Company Ltd. 在芬兰和其他国家的商标。所有其他商标均为各自所有者的财产。