QGeoAreaMonitorSource Class

Die Klasse QGeoAreaMonitorSource ermöglicht die Erkennung von Abstandsänderungen für einen bestimmten Satz von Koordinaten. Mehr...

Kopfzeile: #include <QGeoAreaMonitorSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
Erbt: 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)

Detaillierte Beschreibung

Eine QGeoAreaMonitorSource gibt Signale aus, wenn sich die aktuelle Position innerhalb oder außerhalb der Reichweite eines bestimmten Gebiets befindet. Jedes Gebiet wird durch ein QGeoAreaMonitorInfo Objekt spezifiziert. Zum Beispiel:

public: MyClass() : QObject() { QGeoAreaMonitorSource*monitor = QGeoAreaMonitorSource::createDefaultSource(this); if(monitor) { connect(monitor, SIGNAL(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo)), this, SLOT(bereichEingetreten(QGeoAreaMonitorInfo,QGeoPositionInfo))); connect(monitor, SIGNAL(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo)), dies, 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 der gleichen sourceName() teilt sich das gleiche Bereichsüberwachungs-Backend. Wenn ein neues QGeoAreaMonitorInfo -Objekt über startMonitoring() oder requestUpdate() hinzugefügt wird, kann es von einer anderen Instanz dieser Klasse abgerufen werden (vorausgesetzt, sie stammen aus demselben Bereichsüberwachungsanbieter-Plug-in). Das gleiche Singleton-Muster gilt für die Instanz QGeoPositionInfoSource, die von dieser Klasse verwendet wird. Der folgende Codeschnipsel verdeutlicht dieses Verhalten:

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

Member Type Dokumentation

enum QGeoAreaMonitorSource::AreaMonitorFeature
flags QGeoAreaMonitorSource::AreaMonitorFeatures

Definiert die Typen der Gebietsüberwachungsfunktionen.

KonstanteWertBeschreibung
QGeoAreaMonitorSource::PersistentAreaMonitorFeature0x00000001QGeoAreaMonitorInfo Instanzen können persistent gemacht werden. Ein persistenter Monitor ist auch dann noch aktiv, wenn die Anwendung, die den Monitor verwaltet, nicht läuft.
QGeoAreaMonitorSource::AnyAreaMonitorFeature0xffffffffEntspricht allen möglichen Bereichsüberwachungsfunktionen.

Der Typ AreaMonitorFeatures ist ein Typedef 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 entfernten Bereichsüberwachungs-Backend schlug fehl, da die Anwendung nicht über die erforderlichen Berechtigungen verfügte.
QGeoAreaMonitorSource::InsufficientPositionInfo1Die Bereichsüberwachungsquelle konnte keinen Standortfix abrufen oder die Genauigkeit des Fixes ist nicht hoch genug, um eine effektive Bereichsüberwachung zu gewährleisten.
QGeoAreaMonitorSource::NoError3Es ist kein Fehler aufgetreten.
QGeoAreaMonitorSource::UnknownSourceError2Ein nicht identifizierter Fehler ist aufgetreten.

Dokumentation der Mitgliederfunktionen

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

Erzeugt eine Monitorquelle mit der angegebenen parent.

[virtual noexcept] QGeoAreaMonitorSource::~QGeoAreaMonitorSource()

Zerstört 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 areaEntered() oder areaExited(). Mehrere QGeoAreaMonitorSource Instanzen innerhalb der gleichen Anwendung teilen sich die gleichen aktiven Monitorobjekte.

Sofern nicht ein aktives QGeoAreaMonitorInfo isPersistent () wird ein aktives QGeoAreaMonitorInfo gestoppt, 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 Zentrum innerhalb von lookupArea liegt. Wenn lookupArea leer ist, 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 areaEntered() oder areaExited(). Mehrere QGeoAreaMonitorSource Instanzen innerhalb der gleichen Anwendung teilen sich die gleichen aktiven Monitorobjekte.

Sofern nicht ein aktives QGeoAreaMonitorInfo isPersistent () wird ein aktives QGeoAreaMonitorInfo gestoppt, sobald die aktuelle Anwendung beendet wird.

Siehe auch QGeoShape.

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

Wird gesendet, wenn sich die aktuelle Position von einer Position außerhalb des aktiven monitor zu einer Position innerhalb des überwachten Bereichs bewegt hat.

Die update hält die neue Position.

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

Wird gesendet, wenn sich die aktuelle Position von einer Position innerhalb des aktiven monitor zu einer Position außerhalb des überwachten Bereichs bewegt hat.

Die update hält die neue Position.

[static] QStringList QGeoAreaMonitorSource::availableSources()

Gibt eine Liste der verfügbaren Monitor-Plugins zurück, einschließlich des Standard-System-Backends, falls eines vorhanden ist.

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

Gibt den Wert der Backend-spezifischen Eigenschaft namens name zurück, falls 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 verwenden.

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)

Erzeugt eine Monitorquelle mit der angegebenen parent und gibt sie zurück, indem das Plugin mit dem Namen sourceName geladen wird.

Gibt nullptr zurück, wenn das Plugin nicht gefunden wird.

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

Gibt den Typ des zuletzt aufgetretenen Fehlers zurück.

Hinweis: Seit Qt6 wird der letzte Fehler immer zurückgesetzt, wenn startMonitoring() oder requestUpdate() aufgerufen wird.

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

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

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

Wird gesendet, wenn monitor abgelaufen ist. Ein abgelaufener Bereichsmonitor wird automatisch aus der Liste von activeMonitors() entfernt.

Siehe auch activeMonitors().

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

Gibt das aktuelle QGeoPositionInfoSource zurück, das von diesem QGeoAreaMonitorSource Objekt verwendet wird. Die Funktion gibt QGeoPositionInfoSource::createDefaultSource() zurück, wenn kein anderes Objekt gesetzt wurde.

Die Funktion gibt nullptr zurück, wenn nicht einmal ein Standard QGeoPositionInfoSource existiert.

Jede Verwendung der zurückgegebenen QGeoPositionInfoSource Instanz sollte die Tatsache berücksichtigen, dass sie sich in einem anderen Thread befinden kann.

Siehe auch QGeoPositionInfoSource und setPositionInfoSource().

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

Aktiviert die einmalige Bereichsüberwachung. Die Bereichsüberwachung für monitor wird durchgeführt, bis diese QGeoAreaMonitorSource Instanz signal zum ersten Mal aussendet. Sobald das Signal ausgesendet wurde, wird monitor automatisch aus der Liste von activeMonitors() entfernt. Wenn monitor ungültig ist oder ein Verfallsdatum ü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 ausgegeben wurde. Bis zu diesem Zeitpunkt kann jedes andere Signal je nach Gebietskontext null oder mehr Mal ausgesendet 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 nicht mehr fortgesetzt werden. Zu diesem Zeitpunkt können nur die Signale areaEntered() und areaExited() verwendet werden, um den Überwachungsprozess zu beenden.

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

Wenn monitor bereits über startMonitoring() registriert wurde, wird es in ein Single-Shot-Verhalten umgewandelt.

Hinweis: Seit Qt6 setzt diese Methode immer den letzten Fehler auf NoError zurück, bevor die Überwachung gestartet wird.

Siehe auch startMonitoring() und stopMonitoring().

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

Setzt die Backend-spezifische Eigenschaft namens name auf value. Gibt bei Erfolg true zurück, andernfalls false. Backend-spezifische Eigenschaften können verwendet werden, um das Verhalten des Subsystems zur Bereichsüberwachung 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 Bereichsüberwachungs-Backend wird zum neuen QObject übergeordneten Objekt für newSource. Das vorherige QGeoPositionInfoSource Objekt wird gelöscht. Alle QGeoAreaMonitorSource Instanzen, die auf demselben sourceName() basieren, teilen sich 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 Eigentümerschaft von Unterklassen von QGeoAreaMonitorSource übernommen werden muss. Aufgrund des Singleton-Musters hinter dieser Klasse kann newSource in einen neuen Thread verschoben werden.

Siehe auch positionInfoSource().

QString QGeoAreaMonitorSource::sourceName() const

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

Dies ist derselbe Name, der an 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 kann, könnte die Nichtverfügbarkeit einer geeigneten Standardpositionsinformationsquelle sein, während keine alternative QGeoPositionInfoSource über setPositionInfoSource() gesetzt wurde.

Wenn monitor bereits aktiv ist, wird das bestehende Monitor-Objekt durch die neue monitor -Referenz ersetzt. Die Identifizierung von QGeoAreaMonitorInfo Instanzen erfolgt über QGeoAreaMonitorInfo::identifier(). Daher kann diese Funktion auch dazu verwendet werden, aktive Monitore zu aktualisieren.

Wenn monitor ein Verfallsdatum hat, das übergeben wurde, 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.

Das Anfordern einer permanenten Überwachung für eine QGeoAreaMonitorSource Instanz schlägt fehl, wenn das Bereichsüberwachungs-Backend QGeoAreaMonitorSource::PersistentAreaMonitorFeature nicht unterstützt.

Hinweis: Seit Qt6 setzt diese Methode immer den letzten Fehler auf NoError zurück, bevor die Überwachung gestartet wird.

Siehe auch stopMonitoring().

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

Gibt true zurück, wenn monitor erfolgreich aus der Liste von 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 Bereichsüberwachungsfunktionen zurück.

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