このページについて

変更点Qt Positioning

Qt 6 における変更点は、フレームワークの効率性と使いやすさを向上させるための意図的な取り組みの結果です。

各リリースにおいて、すべての公開 API についてバイナリおよびソースの互換性を維持するよう努めています。しかし、Qt をより優れたフレームワークにするためには、一部の変更は避けられませんでした。

このトピックでは、Qt Positioning におけるそれらの変更点をまとめ、それらに対処するためのガイダンスを提供します。

公開 API の後方互換性を破る変更

このセクションでは、ソース互換性を破る API の変更に関する情報を記載しています。

QGeoPolygon::path() の名前変更

QGeoPolygon::path() およびQGeoPolygon::setPath() メソッドは、それぞれQGeoPolygon::perimeter() およびQGeoPolygon::setPerimeter() に名前が変更されました。QML 側では、QGeoPolygon::perimeter プロパティを何の変更もなく使用できます。

QGeoLocation の境界領域には、QGeoShape を使用してください

QGeoLocation クラスおよびその QML 対応クラスであるLocation は、境界領域の指定に `QGeoRectangle ` の代わりに `QGeoShape ` を使用するように更新されました。

C++

QGeoLocation::boundingBox() およびQGeoLocation::setBoundingBox() は、それぞれQGeoLocation::boundingShape() およびQGeoLocation::setBoundingShape() に置き換えられました。基礎となるデータ格納には、QGeoShape オブジェクトが使用されるようになりました。

QML

QGeoLocation::boundingBox プロパティは、QGeoLocation::boundingShape に置き換えられました。このプロパティはQtPositioning 6.2以降で利用可能となっているため、QMLファイル内のインポートバージョンを必ず更新してください。

import QtPositioning 6.2

QGeoShape::extendShape() の削除

QGeoShape::extendShape() メソッドはQt 5.9で非推奨となり、Qt 6で最終的に削除されました。これらのクラスでこの機能が必要な場合は、QGeoRectangle::extendRectangle()およびQGeoCircle::extendCircle()を使用してください。

シグナル「error」を「errorOccurred」に名称変更

Qt 5 では、複数のQt Positioning クラスがerror() シグナルを持っていましたが、これはerror() メソッドと競合していました。Qt 6 では、これらのシグナルの名前をerrorOccurred() に変更しました。具体的には:

更新タイムアウトシグナルの削除

Qt 5 では、指定されたタイムアウト内に現在の位置情報や衛星情報を取得できなかった場合に通知するために、QGeoPositionInfoSource::updateTimeout() およびQGeoSatelliteInfoSource::requestTimeout() シグナルが使用されていました。これらのシグナルは Qt 6 で削除されました。代わりに、新しいエラータイプを持つerrorOccurred() シグナルが使用されます。具体的には:

PositionSource QMLオブジェクトについても同様の変更が適用されます。「PositionSource::updateTimeout() 」シグナルは削除されました。代わりに、PositionSource.UpdateTimeoutError を持つ「PositionSource::sourceError 」プロパティが使用されます。

NMEA サポートの再設計

Qt 5 では、serialnmea測位プラグインと、PositionSource オブジェクト内のnmeaSource プロパティがありました。

このプラグインはシリアルポート経由の NMEA ストリームへのアクセスを提供し、QML オブジェクトは TCP ソケットまたはローカルファイルからの NMEA ストリームの読み取りを担当していました。

Qt 6では、これらの機能をすべて1つのプラグインに統合し、プラグイン名は「nmea」に変更されました。これにより、シリアルポート、TCPソケット、ローカルファイルという3つのNMEAデータソースすべてに対応できるようになりました。詳細については、プラグインの説明を参照してください。

PositionSource オブジェクトのnmeaSource プロパティは削除されました。

その他のAPIの変更

このセクションには、ソース互換性を損なわないAPIの改善点が記載されています。ただし、アプリケーションのロジックに影響を与える可能性があるため、これらについて知っておくことは依然として有益です。

エラーの適切なリセット

Qt 5 では、QGeoAreaMonitorSource 、QGeoPositionInfoSource 、およびQGeoSatelliteInfoSource クラスのエラーはリセットされませんでした。これらのクラスまたはそのサブクラスに対してstartUpdates() 、startMonitoring() 、またはrequestUpdates() を呼び出すことは、実質的に新しいワークセッションを開始することを意味するため、以前のエラーを気にする必要はありません。したがって、この動作は論理的ではありません。Qt 6 以降では、前述のメソッドのいずれかが呼び出されると、エラーはNoError にリセットされます。

追加QGeoAddress::streetNumber

QGeoAddress クラスには、streetNumber プロパティが追加されました。このプロパティには、番地、建物名、あるいはある住所と別の住所を区別するために使用される可能性のあるその他の情報が格納されます。C++コードからこのプロパティにアクセスするには、streetNumber()およびsetStreetNumber()を使用します。

QGeoAddress::street には、現在、通りの名前のみが格納されるようになりました。

Address のQML版についても同様です。Address::street プロパティは現在、通りの名前のみに使用され、Address::streetNumber プロパティはその他の重要な住所の詳細に使用されます。

タイムアウト引数をPositionSource::update()

timeout はミリ秒単位で指定されます。timeout がゼロ(デフォルト値)の場合、ソースに応じて適切なタイムアウト期間がデフォルトで設定されます。

QGeoSatelliteInfo 、QGeoPositionInfo 、およびQGeoAreaMonitorInfo クラスのリファクタリング

これらのクラスは、実装においてQExplicitlySharedDataPointer を使用するようになりました。これは、これらのクラスがコピーオンライトを実装していることを意味します。これにより、コピーコストが低減され、値渡しが可能になります。

もう一つの改善点として、効率的な移動操作のサポートが追加されました。

Qt Positioning プラグインの実装における変更点

このセクションでは、プラグインインターフェースの変更点について説明します。

Qt 5 では、プラグインインターフェースに 2 つのバージョンがありました。

  • QGeoPositionInfoSourceFactory これは基本機能を提供するものでした。
  • QGeoPositionInfoSourceFactoryV2 これは、生成されるオブジェクトに対してカスタムパラメータを指定できるように、基底クラスを拡張したものでした。

Qt 6では、これら2つの実装を1つに統合し、QGeoPositionInfoSourceFactory クラスのみを残しました。このクラスのメソッドでは、カスタムパラメータを渡すことができるようになりました。

注: メジャーバージョンの更新に合わせて、インターフェース識別子が更新されました。Qt Positioning プラグインでは、"org.qt-project.qt.position.sourcefactory/6.0" を使用してください。

以下に、プラグインクラスの宣言例を示します。

class MyPlugin : public QObject, public QGeoPositionInfoSourceFactory
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0"
                      FILE "plugin.json")
    Q_INTERFACES(QGeoPositionInfoSourceFactory)

public:
    QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap &parameters) override;
    QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap &parameters) override;
    QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap &parameters) override;
};

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.