このページでは

QGeoAreaMonitorSource Class

QGeoAreaMonitorSource クラスを使用すると、指定された座標セットに対する近接状態の変化を検出することができます。詳細...

ヘッダー: #include <QGeoAreaMonitorSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
継承元: QObject

パブリック型

enum AreaMonitorFeature { PersistentAreaMonitorFeature, AnyAreaMonitorFeature }
flags AreaMonitorFeatures
enum Error { AccessError, InsufficientPositionInfo, NoError, UnknownSourceError }

パブリック関数

QGeoAreaMonitorSource(QObject *parent)
virtual ~QGeoAreaMonitorSource()
virtual QList<QGeoAreaMonitorInfo> activeMonitors() const = 0
virtual QList<QGeoAreaMonitorInfo> activeMonitors(const QGeoShape &lookupArea) const = 0
(since 6.2) virtual QVariant backendProperty(const QString &name) const
virtual QGeoAreaMonitorSource::Error error() const = 0
virtual QGeoPositionInfoSource *positionInfoSource() const
virtual bool requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0
(since 6.2) virtual bool setBackendProperty(const QString &name, const QVariant &value)
virtual void setPositionInfoSource(QGeoPositionInfoSource *newSource)
QString sourceName() const
virtual bool startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0
virtual bool stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0
virtual QGeoAreaMonitorSource::AreaMonitorFeatures supportedAreaMonitorFeatures() const = 0

シグナル

void areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
void areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
void errorOccurred(QGeoAreaMonitorSource::Error areaMonitoringError)
void monitorExpired(const QGeoAreaMonitorInfo &monitor)

静的パブリックメンバー

QStringList availableSources()
QGeoAreaMonitorSource *createDefaultSource(QObject *parent)
QGeoAreaMonitorSource *createSource(const QString &sourceName, QObject *parent)

詳細な説明

QGeoAreaMonitorSourceは、現在の位置が指定されたエリアの範囲内に入ったとき、または範囲外に出たときにシグナルを発生させます。各エリアは、QGeoAreaMonitorInfo オブジェクトによって指定されます。例:

public:
    MyClass() : QObject()
    {
        QGeoAreaMonitorSource*monitor =QGeoAreaMonitorSource::createDefaultSource(this);
        if(monitor) {
            connect(monitor,SIGNAL(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo)),
                    this,SLOT(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo)));
            connect(monitor,SIGNAL(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo)),
                    this,SLOT(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo)));

            QGeoAreaMonitorInfo bigBen("Big Ben");
            QGeoCoordinate position(51.50104,-0.124632);
            bigBen.setArea(QGeoCircle(position, 100));

            monitor->startMonitoring(bigBen);

        }else{
            qDebug() << "Could not create default area monitor";
        }
    }

publicQ_SLOTS:
    voidareaEntered(constQGeoAreaMonitorInfo&mon, constQGeoPositionInfo&update)
    {
        Q_UNUSED(mon);

        qDebug() << "Now within 100 meters, current position is" << update.coordinate();
    }

    voidareaExited(constQGeoAreaMonitorInfo&mon, constQGeoPositionInfo&update)
    {
        Q_UNUSED(mon);

        qDebug() << "No longer within 100 meters, current position is" << update.coordinate();
    }

QGeoAreaMonitorSource はシングルトンパターンに従っています。sourceName() を持つこのクラスの各インスタンスは、同じエリアモニタリングバックエンドを共有します。startMonitoring() またはrequestUpdate() を通じて新しいQGeoAreaMonitorInfo オブジェクトが追加された場合、このクラスの別のインスタンスからそのオブジェクトを取得することができます(それらが同じエリアモニタープロバイダプラグインから取得されている場合に限ります)。 このクラスで使用されるQGeoPositionInfoSource インスタンスにも、同様のシングルトンパターンが適用されます。以下のコードスニペットはこの挙動を強調しています:

QGeoAreaMonitorSource *s1 = QGeoAreaMonitorSource::createSource("blah", this);
QGeoAreaMonitorSource *s2 = QGeoAreaMonitorSource::createSource("blah", this);
QVERIFY(s1->positionInfoSource() == s2->positionInfoSource);

メンバ型のドキュメント

enum QGeoAreaMonitorSource::AreaMonitorFeature
flags QGeoAreaMonitorSource::AreaMonitorFeatures

エリア監視機能の種類を定義します。

定数値説明
QGeoAreaMonitorSource::PersistentAreaMonitorFeature0x00000001QGeoAreaMonitorInfo インスタンスは永続化できます。永続的なモニターは、そのモニターを管理するアプリケーションが実行されていない場合でも、アクティブな状態を維持します。
QGeoAreaMonitorSource::AnyAreaMonitorFeature0xffffffffすべてのエリア監視機能に一致します。

AreaMonitorFeatures 型は、QFlags<AreaMonitorFeature> の typedef です。これは、AreaMonitorFeature 値の論理和(OR)の組み合わせを格納します。

enum QGeoAreaMonitorSource::Error

位置決め方法の種類を定義します。

Error列挙型は、発生しうるエラーを表します。

定数値説明
QGeoAreaMonitorSource::AccessError0アプリケーションに必要な権限が不足していたため、リモートエリアモニタリングバックエンドへの接続確立に失敗しました。
QGeoAreaMonitorSource::InsufficientPositionInfo1アプリケーションに必要な権限が不足していたため、リモートエリア監視バックエンドへの接続確立に失敗しました。エリア監視ソースが位置情報の特定を取得できなかったか、またはその精度が、効果的なエリア監視を行うには不十分です。
QGeoAreaMonitorSource::NoError3エラーは発生していません。
QGeoAreaMonitorSource::UnknownSourceError2未確認のエラーが発生しました。

メンバ関数のドキュメント

[explicit] QGeoAreaMonitorSource::QGeoAreaMonitorSource(QObject *parent)

指定されたparent を使用して、モニターソースを作成します。

[virtual noexcept] QGeoAreaMonitorSource::~QGeoAreaMonitorSource()

モニターソースを削除します。

[pure virtual] QList<QGeoAreaMonitorInfo> QGeoAreaMonitorSource::activeMonitors() const

QGeoAreaMonitorSource オブジェクトが認識している、すべてのアクティブなモニターのリストを返します。

アクティブなモニターは、startMonitoring() を通じて起動されます。各アクティブなモニターについて、ソースオブジェクトは、areaEntered() やareaExited() などの必要なシグナルを発行します。同じアプリケーション内の複数のQGeoAreaMonitorSource インスタンスは、同じアクティブなモニターオブジェクトを共有します。

QGeoAreaMonitorInfo がisPersistent() を実行していない限り、アクティブなQGeoAreaMonitorInfo は、現在のアプリケーションが終了すると停止します。

[pure virtual] QList<QGeoAreaMonitorInfo> QGeoAreaMonitorSource::activeMonitors(const QGeoShape &lookupArea) const

QGeoAreaMonitorSource オブジェクトが認識している、中心がlookupArea 内に位置するすべてのアクティブなモニターのリストを返します。lookupArea が空の場合、返されるリストも空になります。

アクティブなモニターは、startMonitoring() を通じて起動されます。各アクティブなモニターについて、ソースオブジェクトはareaEntered() やareaExited() などの必要なシグナルを発行します。同じアプリケーション内の複数のQGeoAreaMonitorSource インスタンスは、同じアクティブなモニターオブジェクトを共有します。

アクティブなQGeoAreaMonitorInfo がisPersistent()を実行しない限り、アクティブなQGeoAreaMonitorInfo は現在のアプリケーションが終了すると停止します。

QGeoShapeも参照してください 。

[signal] void QGeoAreaMonitorSource::areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)

現在の位置が、アクティブなmonitor の外側にある位置から、監視エリア内の位置に移動した際に発行されます。

update には新しい位置情報が保持されます。

[signal] void QGeoAreaMonitorSource::areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)

現在の位置が、アクティブなmonitor 内の位置から、監視エリア外の位置に移動した際に発火します。

update には新しい位置情報が保持されます。

[static] QStringList QGeoAreaMonitorSource::availableSources()

利用可能なモニタープラグインのリストを返します。利用可能な場合は、デフォルトのシステムバックエンドも含まれます。

[virtual, since 6.2] QVariant QGeoAreaMonitorSource::backendProperty(const QString &name) const

name という名前のバックエンド固有のプロパティが存在する場合、その値を返します。存在しない場合、返される値は無効となります。

この関数は Qt 6.2 で導入されました。

setBackendProperty()も参照してください 。

[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createDefaultSource(QObject *parent)

指定されたparent を持つモニターソースを作成し、それを返します。このモニターソースは、基盤となるシステム上のリソースを使用して領域を監視します。

システムが位置監視をサポートしていない場合、nullptr を返します。

[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createSource(const QString &sourceName, QObject *parent)

指定されたparent を持つモニターソースを作成し、sourceName という名前のプラグインを読み込んで返します。

プラグインが見つからない場合は、nullptr を返します。

[pure virtual] QGeoAreaMonitorSource::Error QGeoAreaMonitorSource::error() const

最後に発生したエラーのタイプを返します。

注:Qt6以降、 startMonitoring()またはrequestUpdate()を呼び出すと、常に最後のエラーがリセットされます。

[signal] void QGeoAreaMonitorSource::errorOccurred(QGeoAreaMonitorSource::Error areaMonitoringError)

この信号は、エラーが発生した後に発信されます。areaMonitoringError パラメータは、発生したエラーの種類を示します。

[signal] void QGeoAreaMonitorSource::monitorExpired(const QGeoAreaMonitorInfo &monitor)

monitor の有効期限が切れたときに発生します。有効期限が切れたエリアモニターは、activeMonitors()のリストから自動的に削除されます。

activeMonitors()も参照してください 。

[virtual] QGeoPositionInfoSource *QGeoAreaMonitorSource::positionInfoSource() const

このQGeoAreaMonitorSource オブジェクトによって現在使用されているQGeoPositionInfoSource を返します。他のオブジェクトが設定されていない場合、この関数はQGeoPositionInfoSource::createDefaultSource()を返します。

デフォルトのQGeoPositionInfoSource さえ存在しない場合、この関数はnullptr を返します。

返されたQGeoPositionInfoSource インスタンスを使用する際は、それが別のスレッドに存在している可能性があることに留意する必要があります。

QGeoPositionInfoSource およびsetPositionInfoSource()も参照してください 。

[pure virtual] bool QGeoAreaMonitorSource::requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal)

シングルショットのエリアモニタリングを有効にします。monitor に対するエリアモニタリングは、このQGeoAreaMonitorSource インスタンスが初めてsignal を発信するまで実行されます。シグナルが発信されると、monitor はactiveMonitors()のリストから自動的に削除されます。monitor が無効であるか、有効期限が過ぎている場合、この関数はfalse を返します。

QGeoAreaMonitor singleShotMonitor;
QGeoAreaMonitorSource * source = QGeoAreaMonitorSource::createDefaultSource(this);
//...
bool ret = source->requestUpdate(singleShotMonitor,
                      SIGNAL(areaExited(QGeoAreaMonitor,QGeoPositionInfo)));

上記のsingleShotMonitor オブジェクトは、areaExited()シグナルが初めて発せられた時点で、更新の送信を停止します。この時点までは、エリアコンテキストに応じて、他のシグナルが0回以上発せられる可能性があります。

同じモニターオブジェクトの複数のシグナルに対して、同時に更新を要求することはできません。この関数への最後の呼び出しによって、更新が停止するシグナルが決定されます。この段階では、areaEntered() およびareaExited() シグナルのみが、モニタリングプロセスを終了するために使用できます。

QGeoAreaMonitorSource インスタンスに対する永続的なモニタリングを要求しても、エリアモニタリングバックエンドがQGeoAreaMonitorSource::PersistentAreaMonitorFeature をサポートしていない場合は失敗します。

monitor がすでにstartMonitoring()を介して登録されている場合、その動作はシングルショット動作に変換されます。

注: Qt6以降、 このメソッドはモニタリングを開始する前に、常に「NoError 」の最後のエラーをリセットします。

startMonitoring() およびstopMonitoring()も参照してください 。

[virtual, since 6.2] bool QGeoAreaMonitorSource::setBackendProperty(const QString &name, const QVariant &value)

name という名前のバックエンド固有のプロパティをvalue に設定します。成功した場合はtrue を返し、失敗した場合はfalse を返します。バックエンド固有のプロパティを使用することで、実行時に領域監視サブシステムの動作を設定することができます。

この関数は Qt 6.2 で導入されました。

backendProperty()も参照してください 。

[virtual] void QGeoAreaMonitorSource::setPositionInfoSource(QGeoPositionInfoSource *newSource)

このQGeoAreaMonitorSource オブジェクトが使用する新しいQGeoPositionInfoSource を設定します。エリアモニタリングバックエンドは、newSource の新しいQObject 親となります。以前のQGeoPositionInfoSource オブジェクトは削除されます。同じsourceName()に基づくすべてのQGeoAreaMonitorSource インスタンスは、同じQGeoPositionInfoSource インスタンスを共有します。

これは、エリア監視エンジンが使用する位置決めシステムを操作したい場合に役立つ可能性があります。

なお、所有権の管理はQGeoAreaMonitorSource のサブクラスが行う必要があります。このクラスの背後にあるシングルトンパターンのため、newSource は新しいスレッドに移動される可能性があります。

positionInfoSource()も参照してください 。

QString QGeoAreaMonitorSource::sourceName() const

使用中のエリアモニターソース実装の一意の名前を返します。

これは、特定のエリアモニターソース実装の新しいインスタンスを作成するために、createSource() に渡すことができるのと同じ名前です。

[pure virtual] bool QGeoAreaMonitorSource::startMonitoring(const QGeoAreaMonitorInfo &monitor)

monitor の監視を正常に開始できた場合は `true ` を返し、そうでない場合は `false` を返します。監視を開始できない理由として、適切なデフォルトの位置情報ソースが利用できないことが考えられます。この場合、setPositionInfoSource() を通じて代替の `QGeoPositionInfoSource ` が設定されていないことが原因である可能性があります。

monitor がすでにアクティブな場合、既存のモニターオブジェクトは新しいmonitor 参照に置き換えられます。QGeoAreaMonitorInfo インスタンスの識別はQGeoAreaMonitorInfo::identifier()を介して行われます。したがって、この関数はアクティブなモニターを更新するためにも使用できます。

monitor の有効期限が過ぎている場合、この関数はfalseを返します。requestUpdate()を介してすでに登録済みのシングルショット・モニターに対してこの関数を呼び出すと、モニターは永続的な監視モードに切り替わります。

QGeoAreaMonitorSource インスタンスに対して永続的な監視を要求しても、エリア監視バックエンドがQGeoAreaMonitorSource::PersistentAreaMonitorFeature をサポートしていない場合は失敗します。

注:Qt6以降、 このメソッドは監視を開始する前に、常にNoError の最後のエラーをリセットします。

stopMonitoring()も参照してください 。

[pure virtual] bool QGeoAreaMonitorSource::stopMonitoring(const QGeoAreaMonitorInfo &monitor)

monitor がactiveMonitors()のリストから正常に削除された場合はtrueを返し、そうでない場合はfalseを返します。この動作は、monitor がstartMonitoring()またはrequestUpdate()のいずれを介して登録されたかには依存しません。

[pure virtual] QGeoAreaMonitorSource::AreaMonitorFeatures QGeoAreaMonitorSource::supportedAreaMonitorFeatures() const

このソースで利用可能なエリア監視機能を返します。

© 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.