Sur cette page

QGeoAreaMonitorSource Class

La classe QGeoAreaMonitorSource permet de détecter les changements de proximité pour un ensemble de coordonnées spécifié. Plus d'informations...

En-tête : #include <QGeoAreaMonitorSource>
CMake : find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake : QT += positioning
Hérite : QObject

Types publics

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

Fonctions publiques

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

Signaux

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)

Membres publics statiques

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

Description détaillée

Une QGeoAreaMonitorSource émet des signaux lorsque la position actuelle se trouve à portée, ou s'est déplacée hors de portée, d'une zone spécifiée. Chaque zone est spécifiée par un objet QGeoAreaMonitorInfo. Par exemple, un objet QGeoAreaMonitorSource

public: MyClass() : QObject() { QGeoAreaMonitorSource*moniteur = 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 suit un modèle de singleton. Chaque instance de la classe ayant le même sourceName() partage le même backend de surveillance de la zone. Si un nouvel objet QGeoAreaMonitorInfo est ajouté via startMonitoring() ou requestUpdate(), il peut être récupéré par une autre instance de cette classe (à condition qu'ils proviennent du même plug-in de fournisseur de surveillance de la zone). Le même modèle de singleton s'applique à l'instance QGeoPositionInfoSource utilisée par cette classe. L'extrait de code suivant illustre ce comportement :

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

Membre Type Documentation

enum QGeoAreaMonitorSource::AreaMonitorFeature
flags QGeoAreaMonitorSource::AreaMonitorFeatures

Définit les types de capacités de surveillance des zones.

ConstanteValeurDescription
QGeoAreaMonitorSource::PersistentAreaMonitorFeature0x00000001QGeoAreaMonitorInfo Les instances peuvent être rendues persistantes. Un moniteur persistant reste actif même lorsque l'application qui gère le moniteur n'est pas en cours d'exécution.
QGeoAreaMonitorSource::AnyAreaMonitorFeature0xffffffffCorrespond à toutes les caractéristiques possibles de surveillance de zone.

Le type AreaMonitorFeatures est un typedef pour QFlags<AreaMonitorFeature>. Il stocke une combinaison OU de valeurs AreaMonitorFeatures.

enum QGeoAreaMonitorSource::Error

Définit les types de méthodes de positionnement.

L'énumération Error représente les erreurs qui peuvent se produire.

ConstanteValeurDescription de l'erreur
QGeoAreaMonitorSource::AccessError0L'établissement de la connexion avec le backend de surveillance de zone à distance a échoué parce que l'application ne disposait pas des privilèges requis.
QGeoAreaMonitorSource::InsufficientPositionInfo1La source de surveillance de la zone n'a pas pu récupérer une position ou la précision de la position n'est pas suffisante pour assurer une surveillance efficace de la zone.
QGeoAreaMonitorSource::NoError3Aucune erreur ne s'est produite.
QGeoAreaMonitorSource::UnknownSourceError2Une erreur non identifiée s'est produite.

Documentation sur les fonctions des membres

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

Crée une source de moniteur avec l'adresse parent.

[virtual noexcept] QGeoAreaMonitorSource::~QGeoAreaMonitorSource()

Détruit la source du moniteur.

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

Renvoie la liste de tous les moniteurs actifs connus de l'objet QGeoAreaMonitorSource.

Un moniteur actif a été lancé via startMonitoring(). Pour chaque moniteur actif, l'objet source émettra les signaux requis, tels que areaEntered() ou areaExited(). Plusieurs instances QGeoAreaMonitorSource au sein de la même application partagent les mêmes objets moniteurs actifs.

À moins qu'un moniteur actif QGeoAreaMonitorInfo isPersistent (), un moniteur actif QGeoAreaMonitorInfo sera arrêté lorsque l'application en cours se terminera.

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

Renvoie la liste de tous les moniteurs actifs connus de l'objet QGeoAreaMonitorSource dont le centre se trouve à l'intérieur de lookupArea. Si lookupArea est vide, la liste renvoyée sera vide.

Un moniteur actif a été lancé via startMonitoring(). Pour chaque moniteur actif, l'objet source émettra les signaux requis, tels que areaEntered() ou areaExited(). Plusieurs instances QGeoAreaMonitorSource au sein de la même application partagent les mêmes objets moniteurs actifs.

À moins qu'un moniteur actif QGeoAreaMonitorInfo isPersistent (), un moniteur actif QGeoAreaMonitorInfo sera arrêté lorsque l'application en cours se terminera.

Voir également QGeoShape.

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

Emis lorsque la position actuelle est passée d'une position en dehors de la zone active monitor à une position à l'intérieur de la zone surveillée.

Le site update conserve la nouvelle position.

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

Emis lorsque la position actuelle est passée d'une position à l'intérieur de la zone active monitor à une position à l'extérieur de la zone surveillée.

Le site update conserve la nouvelle position.

[static] QStringList QGeoAreaMonitorSource::availableSources()

Renvoie une liste des plugins de surveillance disponibles, y compris le backend système par défaut s'il existe.

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

Renvoie la valeur de la propriété spécifique au backend nommée name, si elle est présente. Sinon, la valeur renvoyée sera invalide.

Cette fonction a été introduite dans Qt 6.2.

Voir aussi setBackendProperty().

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

Crée et renvoie une source de surveillance avec l'adresse parent qui surveille les zones utilisant des ressources sur le système sous-jacent.

Renvoie nullptr si le système ne prend pas en charge la surveillance des positions.

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

Crée et renvoie une source de moniteur avec l'adresse parent, en chargeant le plugin nommé sourceName.

Renvoie nullptr si le plugin est introuvable.

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

Renvoie le type d'erreur qui s'est produite en dernier.

Note : Depuis Qt6, la dernière erreur est toujours réinitialisée lors de l'appel à startMonitoring() ou requestUpdate().

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

Ce signal est émis lorsqu'une erreur s'est produite. Le paramètre areaMonitoringError décrit le type d'erreur qui s'est produite.

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

Emis lorsque monitor a expiré. Un moniteur de zone expiré est automatiquement supprimé de la liste de activeMonitors().

Voir également activeMonitors().

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

Renvoie l'adresse QGeoPositionInfoSource utilisée par cet objet QGeoAreaMonitorSource. La fonction renvoie QGeoPositionInfoSource::createDefaultSource() si aucun autre objet n'a été défini.

La fonction renvoie nullptr s'il n'existe pas de QGeoPositionInfoSource par défaut.

Toute utilisation de l'instance QGeoPositionInfoSource renvoyée doit tenir compte du fait qu'elle peut résider dans un autre thread.

Voir aussi QGeoPositionInfoSource et setPositionInfoSource().

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

Active la surveillance de zone en une seule fois. La surveillance de zone pour monitor sera effectuée jusqu'à ce que cette instance QGeoAreaMonitorSource émette signal pour la première fois. Une fois le signal émis, monitor est automatiquement supprimé de la liste des activeMonitors(). Si monitor n'est pas valide ou si sa date d'expiration est dépassée, cette fonction renvoie false.

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

L'objet singleShotMonitor ci-dessus cessera d'envoyer des mises à jour dès que le signal areaExited() aura été émis pour la première fois. Jusqu'à ce moment, tout autre signal peut être émis zéro ou plusieurs fois en fonction du contexte de la zone.

Il n'est pas possible de demander simultanément des mises à jour pour plus d'un signal du même objet moniteur. Le dernier appel à cette fonction détermine le signal à partir duquel les mises à jour cessent. À ce stade, seuls les signaux areaEntered() et areaExited() peuvent être utilisés pour mettre fin au processus de surveillance.

La demande de surveillance persistante d'une instance QGeoAreaMonitorSource échoue si le backend de surveillance de la zone ne prend pas en charge QGeoAreaMonitorSource::PersistentAreaMonitorFeature.

Si monitor a déjà été enregistré via startMonitoring(), il est converti en un comportement unique.

Remarque : depuis Qt6, cette méthode réinitialise toujours la dernière erreur à NoError avant de commencer la surveillance.

Voir aussi startMonitoring() et stopMonitoring().

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

Définit la propriété spécifique au backend nommée name en value. Renvoie true en cas de succès, sinon false. Les propriétés spécifiques au backend peuvent être utilisées pour configurer le comportement du sous-système de surveillance de la zone au moment de l'exécution.

Cette fonction a été introduite dans Qt 6.2.

Voir aussi backendProperty().

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

Définit le nouveau QGeoPositionInfoSource à utiliser par cet objet QGeoAreaMonitorSource. Le backend de surveillance de la zone devient le nouveau parent QObject pour newSource. L'objet QGeoPositionInfoSource précédent sera supprimé. Toutes les instances QGeoAreaMonitorSource basées sur le même sourceName() partagent la même instance QGeoPositionInfoSource.

Cela peut être utile lorsqu'il est souhaitable de manipuler le système de positionnement utilisé par le moteur de surveillance de la zone.

Notez que la propriété doit être prise en charge par les sous-classes de QGeoAreaMonitorSource. En raison du modèle de singleton derrière cette classe, newSource peut être déplacé vers un nouveau thread.

Voir également positionInfoSource().

QString QGeoAreaMonitorSource::sourceName() const

Renvoie le nom unique de l'implémentation de la source du moniteur de zone en cours d'utilisation.

Il s'agit du même nom qui peut être transmis à createSource() afin de créer une nouvelle instance d'une implémentation de source de moniteur de zone particulière.

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

Renvoie true si la surveillance de monitor a pu être lancée avec succès ; sinon, renvoie false. L'impossibilité de démarrer la surveillance peut s'expliquer par l'indisponibilité d'une source d'information appropriée sur la position par défaut, alors qu'aucune alternative QGeoPositionInfoSource n'a été définie par l'intermédiaire de setPositionInfoSource().

Si monitor est déjà actif, l'objet de surveillance existant sera remplacé par la nouvelle référence monitor. L'identification des instances QGeoAreaMonitorInfo se fait via QGeoAreaMonitorInfo::identifier(). Par conséquent, cette fonction peut également être utilisée pour mettre à jour les moniteurs actifs.

Si monitor a une date d'expiration dépassée, cette fonction renvoie un message faux. L'appel de cette fonction pour un moniteur "single shot" déjà enregistré via requestUpdate() fait passer le moniteur en mode de surveillance permanente.

Demander une surveillance permanente sur une instance QGeoAreaMonitorSource échoue si le backend de surveillance de la zone ne prend pas en charge QGeoAreaMonitorSource::PersistentAreaMonitorFeature.

Remarque : Depuis Qt6, cette méthode réinitialise toujours la dernière erreur à NoError avant de commencer la surveillance.

Voir aussi stopMonitoring().

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

Retourne vrai si monitor a été supprimé avec succès de la liste de activeMonitors() ; sinon retourne faux. Ce comportement est indépendant du fait que monitor ait été enregistré via startMonitoring() ou requestUpdate().

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

Renvoie les fonctions de surveillance de la zone disponibles pour cette source.

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