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( , )), this, SLOT(areaEntered( , )))QGeoAreaMonitorInfo,QGeoPositionInfo)), this,SLOT(areaExited( , ))); connect(monitor, SIGNAL(areaExited( , )))QGeoAreaMonitorInfo,QGeoPositionInfo)));    QGeoAreaMonitorInfobigBen("Big Ben");        QGeoCoordinateposition(51.50104, -0.124632); bigBen.setArea(QGeoCircle(position, 100));monitor-> startMonitoring(bigBen);}他の{。            qDebug() << "Could not create default area monitor";
        } }publicQ_SLOTS:voidareaEntered(constQGeoAreaMonitorInfo&mon, constQGeoPositionInfo更新)    {
        Q_UNUSED(mon);

        qDebug() << "Now within 100 meters, current position is" << update.coordinate();
    }voidareaExited(constQGeoAreaMonitorInfo&mon, constQGeoPositionInfo更新)    {
        Q_UNUSED(mon);

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

QGeoAreaMonitorSource はシングルトン・パターンに従う。同じ () を持つこのクラスの各インスタンスは、同じエリア・モニター・バックエンドを共有する。新しい オブジェクトが () または () 経由で追加された場合、このクラスの別のインスタンスによって取得することができます(同じエリア・モニター・プロバイダ・プラグインから取得されていることが条件)。同じシングルトンパターンが、このクラスで使用される インスタンスにも適用されます。次のコード・スニペットは、この動作を強調しています:sourceName QGeoAreaMonitorInfo startMonitoring requestUpdate 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)

sourceName という名前のプラグインをロードすることによって、与えられたparent を持つモニターソースを作成し、返します。

プラグインが見つからない場合は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 を初めて発するまで実行される。シグナルが発信されると、monitoractiveMonitors() のリストから自動的に削除される。monitor が無効であるか、有効期限が過ぎている場合、この関数はfalse を返す。

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

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

同じモニター・オブジェクトの複数のシグナルの更新を同時に要求することはできない。この関数の最後の呼び出しによって、更新の継続を停止するシグナルが決定される。この段階では、areaEntered ()とareaExited ()シグナルのみを使用してモニタ処理を終了することができる。

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

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

注意: 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 に有効期限が過ぎている場合、この関数は偽を返します。すでにrequestUpdate ()を介して登録されているシングルショットモニタに対してこの関数を呼び出すと、モニタは永続的な監視モードに切り替わる。

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

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

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

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

activeMonitors() のリストからmonitor が正常に削除された場合はtrueを返し、そうでない場合はfalseを返す。この動作は、monitorstartMonitoring() とrequestUpdate() のどちらで登録されたかに依存しない。

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

このソースで利用可能なエリアモニタリング機能を返します。

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