Auf dieser Seite

QGeoAreaMonitorSource Class

Die Klasse „QGeoAreaMonitorSource“ ermöglicht die Erkennung von Änderungen der Nähe für einen bestimmten Koordinatensatz. Mehr...

Header: #include <QGeoAreaMonitorSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
Erbt von: QObject

Öffentliche Typen

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

Öffentliche Funktionen

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

Signale

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)

Statische öffentliche Mitglieder

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

Ausführliche Beschreibung

Ein `QGeoAreaMonitorSource` sendet Signale aus, wenn sich die aktuelle Position innerhalb des Bereichs eines bestimmten Gebiets befindet oder diesen verlassen hat. Jedes Gebiet wird durch ein ` QGeoAreaMonitorInfo `-Objekt festgelegt. Beispiel:

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";
        }
    }

public Q_SLOTS:
    void areaEntered(const QGeoAreaMonitorInfo&mon, const QGeoPositionInfo&update)
    {
        Q_UNUSED(mon);

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

    void areaExited(const QGeoAreaMonitorInfo&mon, const QGeoPositionInfo&update)
    {
        Q_UNUSED(mon);

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

QGeoAreaMonitorSource folgt einem Singleton-Muster. Jede Instanz der Klasse mit demselben ` sourceName()` nutzt dasselbe Backend zur Bereichsüberwachung. Wenn ein neues ` QGeoAreaMonitorInfo `-Objekt über ` startMonitoring()` oder ` requestUpdate()` hinzugefügt wird, kann es von einer anderen Instanz dieser Klasse abgerufen werden (vorausgesetzt, beide stammen aus demselben Plug-in für den Bereichsüberwachungsanbieter). Das gleiche Singleton-Muster gilt für die von dieser Klasse verwendete Instanz von „ QGeoPositionInfoSource “. Der folgende Codeausschnitt veranschaulicht dieses Verhalten:

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

Dokumentation zu Mitgliedstypen

enum QGeoAreaMonitorSource::AreaMonitorFeature
flags QGeoAreaMonitorSource::AreaMonitorFeatures

Definiert die Arten von Funktionen zur Gebietsüberwachung.

KonstanteWertBeschreibung
QGeoAreaMonitorSource::PersistentAreaMonitorFeature0x00000001QGeoAreaMonitorInfo Instanzen können persistent gemacht werden. Ein persistenter Monitor bleibt auch dann aktiv, wenn die Anwendung, die den Monitor verwaltet, nicht ausgeführt wird.
QGeoAreaMonitorSource::AnyAreaMonitorFeature0xffffffffEntspricht allen möglichen Bereichsüberwachungsfunktionen.

Der Typ „AreaMonitorFeatures“ ist eine Typdefinition für „QFlags<AreaMonitorFeature>“. Er speichert eine ODER-Kombination von „AreaMonitorFeature“-Werten.

enum QGeoAreaMonitorSource::Error

Definiert die Arten von Positionierungsmethoden.

Die Aufzählung „Error“ stellt die Fehler dar, die auftreten können.

KonstanteWertBeschreibung
QGeoAreaMonitorSource::AccessError0Der Verbindungsaufbau zum Backend der Fernbereichsüberwachung ist fehlgeschlagen, da der Anwendung die erforderlichen Berechtigungen fehlten.
QGeoAreaMonitorSource::InsufficientPositionInfo1Die Quelle für die Gebietsüberwachung konnte keine Positionsbestimmung abrufen oder die Genauigkeit der Positionsbestimmung reicht nicht aus, um eine effektive Gebietsüberwachung zu gewährleisten.
QGeoAreaMonitorSource::NoError3Es ist kein Fehler aufgetreten.
QGeoAreaMonitorSource::UnknownSourceError2Es ist ein nicht identifizierter Fehler aufgetreten.

Dokumentation der Mitgliedsfunktionen

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

Erstellt eine Monitorquelle mit der angegebenen „ parent “.

[virtual noexcept] QGeoAreaMonitorSource::~QGeoAreaMonitorSource()

Löscht die Monitorquelle.

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

Gibt die Liste aller aktiven Monitore zurück, die dem Objekt „ QGeoAreaMonitorSource “ bekannt sind.

Ein aktiver Monitor wurde über ` startMonitoring()` gestartet. Für jeden aktiven Monitor sendet das Quellobjekt die erforderlichen Signale aus, wie beispielsweise ` areaEntered()` oder ` areaExited()`. Mehrere ` QGeoAreaMonitorSource `-Instanzen innerhalb derselben Anwendung teilen sich dieselben aktiven Monitorobjekte.

Sofern kein aktiver QGeoAreaMonitorInfo isPersistent () vorhanden ist, wird ein aktiver QGeoAreaMonitorInfo beendet, sobald die aktuelle Anwendung beendet wird.

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

Gibt die Liste aller aktiven Monitore zurück, die dem Objekt „ QGeoAreaMonitorSource “ bekannt sind und deren Mittelpunkt innerhalb von lookupArea liegt. Ist lookupArea leer, ist die zurückgegebene Liste leer.

Ein aktiver Monitor wurde über ` startMonitoring()` gestartet. Für jeden aktiven Monitor sendet das Quellobjekt die erforderlichen Signale aus, wie beispielsweise ` areaEntered()` oder ` areaExited()`. Mehrere ` QGeoAreaMonitorSource `-Instanzen innerhalb derselben Anwendung teilen sich dieselben aktiven Monitorobjekte.

Sofern kein aktiver QGeoAreaMonitorInfo isPersistent () vorhanden ist, wird ein aktiver QGeoAreaMonitorInfo beendet, sobald die aktuelle Anwendung beendet wird.

Siehe auch QGeoShape.

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

Wird ausgelöst, wenn sich die aktuelle Position von einer Stelle außerhalb des aktiven „ monitor “ in einen Bereich innerhalb des überwachten Bereichs bewegt hat.

Der „ update “ enthält die neue Position.

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

Wird ausgelöst, wenn sich die aktuelle Position von einem Punkt innerhalb des aktiven „ monitor “ zu einem Punkt außerhalb des überwachten Bereichs bewegt hat.

Der „ update “ enthält die neue Position.

[static] QStringList QGeoAreaMonitorSource::availableSources()

Gibt eine Liste der verfügbaren Monitor-Plugins zurück, einschließlich des standardmäßigen System-Backends, sofern eines verfügbar ist.

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

Gibt den Wert der backend-spezifischen Eigenschaft „ name “ zurück, sofern vorhanden. Andernfalls ist der zurückgegebene Wert ungültig.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch ` setBackendProperty()`.

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

Erstellt und gibt eine Überwachungsquelle mit der angegebenen „ parent “ zurück, die Bereiche überwacht, die Ressourcen auf dem zugrunde liegenden System nutzen.

Gibt „ nullptr “ zurück, wenn das System keine Unterstützung für die Positionsüberwachung bietet.

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

Erstellt und gibt eine Monitorquelle mit dem angegebenen „ parent “ zurück, indem das Plugin mit dem Namen „ sourceName “ geladen wird.

Gibt ` nullptr ` zurück, wenn das Plugin nicht gefunden werden kann.

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

Gibt den Typ des zuletzt aufgetretenen Fehlers zurück.

Hinweis: Seit Qt6 wird der letzte Fehler beim Aufruf von ` startMonitoring()` oder ` requestUpdate()` immer zurückgesetzt.

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

Dieses Signal wird ausgegeben, nachdem ein Fehler aufgetreten ist. Der Parameter „ areaMonitoringError “ beschreibt die Art des aufgetretenen Fehlers.

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

Wird ausgelöst, wenn „ monitor “ abgelaufen ist. Ein abgelaufener Bereichsmonitor wird automatisch aus der Liste von „ activeMonitors()“ entfernt.

Siehe auch activeMonitors().

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

Gibt den aktuellen „ QGeoPositionInfoSource “ zurück, der von diesem „ QGeoAreaMonitorSource “-Objekt verwendet wird. Die Funktion gibt „ QGeoPositionInfoSource::createDefaultSource()“ zurück, wenn kein anderes Objekt festgelegt wurde.

Die Funktion gibt ` nullptr ` zurück, wenn nicht einmal ein Standard-` QGeoPositionInfoSource ` vorhanden ist.

Bei jeder Verwendung der zurückgegebenen QGeoPositionInfoSource -Instanz sollte berücksichtigt werden, dass diese sich möglicherweise in einem anderen Thread befindet.

Siehe auch „ QGeoPositionInfoSource “ und „ setPositionInfoSource()“.

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

Ermöglicht die einmalige Bereichsüberwachung. Die Bereichsüberwachung für monitor wird so lange durchgeführt, bis diese QGeoAreaMonitorSource -Instanz zum ersten Mal das Signal „ signal “ aussendet. Sobald das Signal ausgesendet wurde, wird „ monitor “ automatisch aus der Liste der activeMonitors() entfernt. Wenn „ monitor “ ungültig ist oder dessen Ablaufdatum bereits überschritten wurde, gibt diese Funktion „ false “ zurück.

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

Das oben genannte Objekt „ singleShotMonitor “ sendet keine Aktualisierungen mehr, sobald das Signal „ areaExited()“ zum ersten Mal ausgelöst wurde. Bis zu diesem Zeitpunkt kann jedes andere Signal je nach Bereichskontext null- oder mehrmals ausgelöst werden.

Es ist nicht möglich, gleichzeitig Aktualisierungen für mehr als ein Signal desselben Monitorobjekts anzufordern. Der letzte Aufruf dieser Funktion bestimmt das Signal, bei dem die Aktualisierungen eingestellt werden. Zu diesem Zeitpunkt können nur die Signale „ areaEntered()“ und „ areaExited()“ verwendet werden, um den Überwachungsprozess zu beenden.

Die Anforderung einer dauerhaften Überwachung einer „ QGeoAreaMonitorSource “-Instanz schlägt fehl, wenn das Backend der Bereichsüberwachung „ QGeoAreaMonitorSource::PersistentAreaMonitorFeature “ nicht unterstützt.

Wurde „ monitor “ bereits über „ startMonitoring()“ registriert, wird es in ein Einmal-Verhalten umgewandelt.

Hinweis: Seit Qt6 setzt diese Methode vor Beginn der Überwachung immer den letzten Fehler auf „ NoError “ zurück.

Siehe auch startMonitoring() und stopMonitoring().

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

Setzt die backend-spezifische Eigenschaft „ name “ auf „ value “. Gibt bei Erfolg „ true “ zurück, andernfalls „ false “. Backend-spezifische Eigenschaften können verwendet werden, um das Verhalten des Bereichsüberwachungs-Subsystems zur Laufzeit zu konfigurieren.

Diese Funktion wurde in Qt 6.2 eingeführt.

Siehe auch ` backendProperty()`.

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

Legt das neue „ QGeoPositionInfoSource “ fest, das von diesem „ QGeoAreaMonitorSource “-Objekt verwendet werden soll. Das Area-Monitoring-Backend wird zum neuen „ QObject “-Elternobjekt für „ newSource “. Das bisherige „ QGeoPositionInfoSource “-Objekt wird gelöscht. Alle „ QGeoAreaMonitorSource “-Instanzen, die auf demselben „ sourceName()“ basieren, nutzen dieselbe „ QGeoPositionInfoSource “-Instanz.

Dies kann nützlich sein, wenn es wünschenswert ist, das von der Bereichsüberwachungs-Engine verwendete Positionierungssystem zu manipulieren.

Beachten Sie, dass die Eigentumsverhältnisse von Unterklassen von ` QGeoAreaMonitorSource` geregelt werden müssen. Aufgrund des dieser Klasse zugrunde liegenden Singleton-Musters kann ` newSource ` in einen neuen Thread verschoben werden.

Siehe auch ` positionInfoSource()`.

QString QGeoAreaMonitorSource::sourceName() const

Gibt den eindeutigen Namen der derzeit verwendeten Implementierung der Bereichsüberwachungsquelle zurück.

Dies ist derselbe Name, der an die Methode ` createSource()` übergeben werden kann, um eine neue Instanz einer bestimmten Bereichsüberwachungsquellen-Implementierung zu erstellen.

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

Gibt „ true “ zurück, wenn die Überwachung von „ monitor “ erfolgreich gestartet werden konnte; andernfalls wird „ false “ zurückgegeben. Ein Grund dafür, dass die Überwachung nicht gestartet werden konnte, könnte die Nichtverfügbarkeit einer geeigneten Standardquelle für Positionsinformationen sein, während über „ setPositionInfoSource()“ keine alternative „ QGeoPositionInfoSource “ festgelegt wurde.

Ist monitor bereits aktiv, wird das bestehende Monitorobjekt durch die neue Referenz monitor ersetzt. Die Identifizierung von QGeoAreaMonitorInfo -Instanzen erfolgt über QGeoAreaMonitorInfo::identifier(). Daher kann diese Funktion auch zur Aktualisierung aktiver Monitore verwendet werden.

Wenn das Ablaufdatum von „ monitor “ bereits überschritten ist, gibt diese Funktion „false“ zurück. Der Aufruf dieser Funktion für einen bereits über „ requestUpdate()“ registrierten Single-Shot-Monitor schaltet den Monitor in einen permanenten Überwachungsmodus um.

Die Anforderung einer dauerhaften Überwachung für eine ` QGeoAreaMonitorSource `-Instanz schlägt fehl, wenn das Backend für die Bereichsüberwachung ` QGeoAreaMonitorSource::PersistentAreaMonitorFeature` nicht unterstützt.

Hinweis: Seit Qt6 setzt diese Methode vor Beginn der Überwachung immer den letzten Fehler auf ` NoError ` zurück.

Siehe auch ` stopMonitoring()`.

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

Gibt „true“ zurück, wenn „ monitor “ erfolgreich aus der Liste „ activeMonitors()“ entfernt wurde; andernfalls wird „false“ zurückgegeben. Dieses Verhalten ist unabhängig davon, ob „ monitor “ über „ startMonitoring()“ oder „ requestUpdate()“ registriert wurde.

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

Gibt die für diese Quelle verfügbaren Funktionen zur Gebietsüberwachung zurück.

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