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.
| Constante | Valeur | Description |
|---|---|---|
QGeoAreaMonitorSource::PersistentAreaMonitorFeature | 0x00000001 | QGeoAreaMonitorInfo 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::AnyAreaMonitorFeature | 0xffffffff | Correspond à 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.
| Constante | Valeur | Description de l'erreur |
|---|---|---|
QGeoAreaMonitorSource::AccessError | 0 | L'é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::InsufficientPositionInfo | 1 | La 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::NoError | 3 | Aucune erreur ne s'est produite. |
QGeoAreaMonitorSource::UnknownSourceError | 2 | Une 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.