地名リスト (QML)

Places List の例では、ListView を使って、場所のリストを検索し、表示する方法を示します。

例の実行

Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Building and Running an Example を参照してください。

Places List の例では、ListView を使用して、特定の地域の場所のリストを検索し、結果を表示する方法を示します。 この特定のケースでは、food という用語に関連する場所の検索が実行されます。

場所をリストで表示するQMLアプリケーションを書くために、まず以下のインポート宣言を行います。

import QtQuick
import QtPositioning
import QtLocation

PluginPlugin は事実上、場所の情報源となるバックエンドです。プラグインの種類によっては、いくつかの必須パラメータを入力する必要がある。最も可能性の高いPluginParameter のタイプは、サービスプラグインで文書化されている何らかの形のサービスアクセストークンです。このスニペットでは、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 をインスタンス化します。インラインのデリゲートが使用されており、すべての検索結果はtype PlaceSearchesult であると仮定しています。その結果、私たちは常にrole という場所にアクセスできると仮定しています。他の検索結果タイプはroleという場所を持たないかもしれません。

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. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。