QGeoAreaMonitorSource Class
La classe QGeoAreaMonitorSource permet de détecter les changements de proximité pour un ensemble donné de coordonnées. En savoir plus...
| En-tête : | #include <QGeoAreaMonitorSource> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
| qmake : | QT += positioning |
| Hérite de : | 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
Un objet `QGeoAreaMonitorSource` émet des signaux lorsque la position actuelle se trouve à l'intérieur ou à l'extérieur de la zone spécifiée. Chaque zone est définie par un objet ` QGeoAreaMonitorInfo `. Par exemple :
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 suit le modèle singleton. Chaque instance de la classe ayant la même valeur pour sourceName() partage le même backend de surveillance de 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’elles proviennent du même plug-in de fournisseur de surveillance de zone). Le même modèle 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);Documentation sur les types de membres
enum QGeoAreaMonitorSource::AreaMonitorFeature
flags QGeoAreaMonitorSource::AreaMonitorFeatures
Définit les types de capacités de surveillance de zone.
| Constante | Valeur | Description |
|---|---|---|
QGeoAreaMonitorSource::PersistentAreaMonitorFeature | 0x00000001 | QGeoAreaMonitorInfo Les instances peuvent être rendues persistantes. Un moniteur persistant reste actif même lorsque l’application qui le gère n’est pas en cours d’exécution. |
QGeoAreaMonitorSource::AnyAreaMonitorFeature | 0xffffffff | Correspond à toutes les fonctionnalités de surveillance de zone possibles. |
Le type AreaMonitorFeatures est une définition de type (typedef) pour QFlags<AreaMonitorFeature>. Il stocke une combinaison « OU » de valeurs AreaMonitorFeature.
enum QGeoAreaMonitorSource::Error
Définit les types de méthodes de positionnement.
L'énumération Error représente les erreurs pouvant survenir.
| Constante | Valeur | Description |
|---|---|---|
QGeoAreaMonitorSource::AccessError | 0 | L'établissement de la connexion au backend de surveillance de zone à distance a échoué car l'application ne disposait pas des privilèges requis. |
QGeoAreaMonitorSource::InsufficientPositionInfo | 1 | La source de surveillance de zone n'a pas pu récupérer de position ou la précision de celle-ci n'est pas suffisante pour assurer une surveillance de zone efficace. |
QGeoAreaMonitorSource::NoError | 3 | Aucune erreur ne s'est produite. |
QGeoAreaMonitorSource::UnknownSourceError | 2 | Une erreur non identifiée s’est produite. |
Documentation des fonctions membres
[explicit] QGeoAreaMonitorSource::QGeoAreaMonitorSource(QObject *parent)
Crée une source de surveillance avec l'parent spécifiée.
[virtual noexcept] QGeoAreaMonitorSource::~QGeoAreaMonitorSource()
Supprime 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 la méthode ` startMonitoring()`. Pour chaque moniteur actif, l’objet source émettra les signaux requis, tels que ` areaEntered()` ou ` areaExited()`. Plusieurs instances de ` QGeoAreaMonitorSource ` au sein d’une même application partagent les mêmes objets de moniteur actif.
À moins qu’un QGeoAreaMonitorInfo actif n’appelle isPersistent(), un QGeoAreaMonitorInfo actif sera arrêté dès que l’application en cours se fermera.
[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 dans 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 de ` QGeoAreaMonitorSource ` au sein d’une même application partagent les mêmes objets de moniteurs actifs.
À moins qu’un QGeoAreaMonitorInfo actif n’émette un isPersistent(), un QGeoAreaMonitorInfo actif sera arrêté dès que l’application en cours se fermera.
Voir également QGeoShape.
[signal] void QGeoAreaMonitorSource::areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
Émis lorsque la position actuelle est passée d'une position située en dehors de l'monitor active à une position située à l'intérieur de la zone surveillée.
L'update contient la nouvelle position.
[signal] void QGeoAreaMonitorSource::areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
Ce message est émis lorsque la position actuelle est passée d'un emplacement situé dans l'monitor e active à un emplacement situé en dehors de la zone surveillée.
L'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 en existe un.
[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 existe. Sinon, la valeur renvoyée sera invalide.
Cette fonction a été introduite dans Qt 6.2.
Voir également setBackendProperty().
[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createDefaultSource(QObject *parent)
Crée et renvoie une source de surveillance dotée de l'parent spécifiée, qui surveille les zones utilisant des ressources sur le système sous-jacent.
Renvoie l'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 surveillance avec l'parent indiquée, en chargeant le plugin nommé sourceName.
Renvoie nullptr si le plugin est introuvable.
[pure virtual] QGeoAreaMonitorSource::Error QGeoAreaMonitorSource::error() const
Renvoie le type de l'erreur qui s'est produite en dernier.
Remarque : depuis Qt6, la dernière erreur est toujours réinitialisée lors de l'appel de ` 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)
Émis lorsque monitor a expiré. Un moniteur de zone expiré est automatiquement supprimé de la liste des activeMonitors().
Voir également activeMonitors().
[virtual] QGeoPositionInfoSource *QGeoAreaMonitorSource::positionInfoSource() const
Renvoie l'QGeoPositionInfoSource e actuel utilisé par cet objet QGeoAreaMonitorSource. La fonction renvoie QGeoPositionInfoSource::createDefaultSource() si aucun autre objet n'a été défini.
La fonction renvoie nullptr si aucun objet QGeoPositionInfoSource, même par défaut, n’existe.
Toute utilisation de l’instance QGeoPositionInfoSource renvoyée doit tenir compte du fait qu’elle peut se trouver dans un autre thread.
Voir également ` QGeoPositionInfoSource ` et ` setPositionInfoSource()`.
[pure virtual] bool QGeoAreaMonitorSource::requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal)
Permet la surveillance ponctuelle d'une zone. La surveillance de la zone pour monitor se poursuivra jusqu'à ce que cette instance de QGeoAreaMonitorSource émette un signal signal pour la première fois. Une fois ce 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 une fois 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, selon le contexte de la zone.
Il n’est pas possible de demander simultanément des mises à jour pour plusieurs signaux d’un même objet de surveillance. 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 sur une instance de ` QGeoAreaMonitorSource ` échoue si le backend de surveillance de zone ne prend pas en charge ` QGeoAreaMonitorSource::PersistentAreaMonitorFeature`.
Si monitor a déjà été enregistré via startMonitoring(), il est converti en un comportement à déclenchement unique.
Remarque : depuis Qt6, cette méthode réinitialise toujours la dernière erreur sur ` NoError ` avant de démarrer la surveillance.
Voir également 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 » sur la valeur « value ». Renvoie « true » en cas de succès, sinon renvoie « false ». Les propriétés spécifiques au backend peuvent être utilisées pour configurer le comportement du sous-système de surveillance de zone lors de l'exécution.
Cette fonction a été introduite dans Qt 6.2.
Voir également backendProperty().
[virtual] void QGeoAreaMonitorSource::setPositionInfoSource(QGeoPositionInfoSource *newSource)
Définit le nouveau moteur de surveillance de zone ( QGeoPositionInfoSource ) qui sera utilisé par cet objet de surveillance de zone ( QGeoAreaMonitorSource ). Le moteur de surveillance de zone devient le nouveau parent ( QObject ) de l'objet de surveillance de zone ( newSource). L'ancien objet de surveillance de zone ( QGeoPositionInfoSource ) sera supprimé. Toutes les instances de surveillance de zone ( QGeoAreaMonitorSource ) basées sur le même moteur de surveillance de zone ( sourceName()) partagent la même instance de surveillance de zone ( QGeoPositionInfoSource ).
Cela peut s’avérer utile lorsqu’il est souhaitable de manipuler le système de positionnement utilisé par le moteur de surveillance de zone.
Notez que la gestion de la propriété doit être assurée par les sous-classes de ` QGeoAreaMonitorSource`. En raison du modèle singleton sous-jacent à 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 de surveillance de zone actuellement utilisée.
Il s'agit du même nom que celui qui peut être transmis à la méthode 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 lancer la surveillance peut s'expliquer par l'indisponibilité d'une source d'informations de position par défaut appropriée, alors qu'aucune source alternative ` QGeoPositionInfoSource ` n'a été définie via la fonction ` 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 de QGeoAreaMonitorInfo s’effectue via QGeoAreaMonitorInfo::identifier(). Par conséquent, cette fonction peut également être utilisée pour mettre à jour des surveillances actives.
Si la date d’expiration de ` monitor ` est dépassée, cette fonction renvoie `false`. L’appel de cette fonction pour un moniteur à déclenchement unique déjà enregistré via ` requestUpdate()` fait passer le moniteur en mode de surveillance permanente.
La demande de surveillance persistante sur une instance de ` QGeoAreaMonitorSource ` échoue si le backend de surveillance de zone ne prend pas en charge ` QGeoAreaMonitorSource::PersistentAreaMonitorFeature`.
Remarque : depuis Qt6, cette méthode réinitialise toujours la dernière erreur sur ` NoError ` avant de démarrer la surveillance.
Voir également ` stopMonitoring()`.
[pure virtual] bool QGeoAreaMonitorSource::stopMonitoring(const QGeoAreaMonitorInfo &monitor)
Renvoie « true » si monitor a bien été supprimé de la liste des activeMonitors(); sinon, renvoie « false ». 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 fonctionnalités de surveillance de 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.