QGeoPositionInfoSource Class
La classe QGeoPositionInfoSource est une classe de base abstraite pour la distribution des mises à jour de position. Plus d'informations...
| En-tête : | #include <QGeoPositionInfoSource> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Positioning)target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
| qmake : | QT += positioning |
| Hérite : | QObject |
| Hérité par : |
Types publics
| enum | Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError } |
| enum | PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods } |
| flags | PositioningMethods |
Propriétés
- minimumUpdateInterval : int
- preferredPositioningMethods : PositioningMethods
- sourceName : QString
- updateInterval : int
Fonctions publiques
| QGeoPositionInfoSource(QObject *parent) | |
| virtual | ~QGeoPositionInfoSource() |
(since Qt 5.14) virtual QVariant | backendProperty(const QString &name) const |
| QBindable<QGeoPositionInfoSource::PositioningMethods> | bindablePreferredPositioningMethods() |
| QBindable<int> | bindableUpdateInterval() |
| virtual QGeoPositionInfoSource::Error | error() const = 0 |
| virtual QGeoPositionInfo | lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0 |
| virtual int | minimumUpdateInterval() const = 0 |
| QGeoPositionInfoSource::PositioningMethods | preferredPositioningMethods() const |
(since Qt 5.14) virtual bool | setBackendProperty(const QString &name, const QVariant &value) |
| virtual void | setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods) |
| virtual void | setUpdateInterval(int msec) |
| QString | sourceName() const |
| virtual QGeoPositionInfoSource::PositioningMethods | supportedPositioningMethods() const = 0 |
| int | updateInterval() const |
Emplacements publics
| virtual void | requestUpdate(int timeout = 0) = 0 |
| virtual void | startUpdates() = 0 |
| virtual void | stopUpdates() = 0 |
Signaux
| void | errorOccurred(QGeoPositionInfoSource::Error positioningError) |
| void | positionUpdated(const QGeoPositionInfo &update) |
(since Qt 5.12) void | supportedPositioningMethodsChanged() |
Membres publics statiques
| QStringList | availableSources() |
| QGeoPositionInfoSource * | createDefaultSource(QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createDefaultSource(const QVariantMap ¶meters, QObject *parent) |
| QGeoPositionInfoSource * | createSource(const QString &sourceName, QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent) |
Description détaillée
La fonction statique QGeoPositionInfoSource::createDefaultSource() crée une source de position par défaut qui est appropriée pour la plate-forme, s'il y en a une. Sinon, QGeoPositionInfoSource recherchera les plugins disponibles qui implémentent l'interface QGeoPositionInfoSourceFactory.
Les utilisateurs d'une sous-classe de QGeoPositionInfoSource peuvent demander la position actuelle en utilisant requestUpdate(), ou démarrer et arrêter des mises à jour régulières de la position en utilisant startUpdates() et stopUpdates(). Lorsqu'une mise à jour est disponible, positionUpdated() est émis. La dernière position connue peut être consultée à l'aide de lastKnownPosition().
Si des mises à jour régulières de la position sont nécessaires, setUpdateInterval() peut être utilisé pour spécifier la fréquence à laquelle ces mises à jour doivent être émises. Si aucun intervalle n'est spécifié, les mises à jour sont simplement fournies dès qu'elles sont disponibles. Par exemple, pour supprimer un intervalle de mise à jour qui a été spécifié précédemment, il suffit de cliquer sur le bouton
// Emit updates every 10 seconds if available QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0); if (source) source->setUpdateInterval(10000);
Pour supprimer un intervalle de mise à jour précédemment défini, appelez setUpdateInterval() avec une valeur de 0.
Remarque : la source de la position peut avoir une valeur minimale requise pour les intervalles de mise à jour, comme indiqué par minimumUpdateInterval().
Remarque : pour utiliser cette classe à partir d'un service Android, voir Qt Positioning sur Android.
Documentation sur les types de membres
enum QGeoPositionInfoSource::Error
L'énumération Error représente les erreurs qui peuvent se produire.
| Constante | Valeur | Description de l'erreur |
|---|---|---|
QGeoPositionInfoSource::AccessError | 0 | L'établissement de la connexion avec le backend de positionnement à distance a échoué parce que l'application ne disposait pas des privilèges requis. |
QGeoPositionInfoSource::ClosedError | 1 | Le backend de positionnement à distance a fermé la connexion, ce qui se produit par exemple lorsque l'utilisateur désactive les services de localisation. Dès que le service de localisation sera réactivé, les mises à jour régulières reprendront. |
QGeoPositionInfoSource::NoError | 3 | Aucune erreur ne s'est produite. |
QGeoPositionInfoSource::UnknownSourceError | 2 | Une erreur non identifiée s'est produite. |
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2) | 4 | Si requestUpdate() a été appelé, cette erreur indique que la position actuelle n'a pas pu être récupérée dans le délai spécifié. Si startUpdates() a été appelé, cette erreur indique que la sous-classe QGeoPositionInfoSource a déterminé qu'elle ne serait plus en mesure de fournir des mises à jour régulières. Dans ce cas, l'erreur ne sera émise qu'après la reprise des mises à jour régulières. |
enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods
Définit les types de méthodes de positionnement.
| Constante | Valeur | Description de la méthode |
|---|---|---|
QGeoPositionInfoSource::NoPositioningMethods | 0x00000000 | Aucune des méthodes de positionnement. |
QGeoPositionInfoSource::SatellitePositioningMethods | 0x000000ff | Méthodes de positionnement par satellite telles que GPS ou GLONASS. |
QGeoPositionInfoSource::NonSatellitePositioningMethods | 0xffffff00 | Autres méthodes de positionnement telles que l'identifiant de cellule 3GPP ou le positionnement basé sur le WiFi. |
QGeoPositionInfoSource::AllPositioningMethods | 0xffffffff | Méthodes de positionnement par satellite dès qu'elles sont disponibles. Autres méthodes non basées sur les satellites. |
Le type PositioningMethods est un typedef pour QFlags<PositioningMethod>. Il stocke une combinaison OU de valeurs de méthodes de positionnement.
Documentation sur les propriétés
[read-only] minimumUpdateInterval : int
Cette propriété indique le temps minimum (en millisecondes) nécessaire pour obtenir une mise à jour de la position.
Il s'agit de la valeur minimale acceptée par setUpdateInterval() et requestUpdate().
Fonctions d'accès :
| virtual int | minimumUpdateInterval() const = 0 |
[bindable] preferredPositioningMethods : PositioningMethods
Remarque : cette propriété prend en charge les liens QProperty.
Définit les méthodes de positionnement préférées pour cette source.
Si les nouvelles méthodes incluent une méthode qui n'est pas prise en charge par la source, la méthode non prise en charge sera ignorée.
Si les nouvelles méthodes n'incluent aucune méthode disponible/prise en charge par la source, les méthodes préférées seront définies sur l'ensemble des méthodes dont dispose la source. Si la source ne dispose d'aucune méthode (par exemple, parce que son service de localisation est désactivé ou qu'elle n'offre pas de service de localisation), les méthodes transmises sont acceptées telles quelles.
La valeur par défaut de cette propriété est NoPositioningMethods.
Remarque : les implémentations de sous-classes doivent appeler l'implémentation de base de setPreferredPositioningMethods() pour s'assurer que preferredPositioningMethods() renvoie la bonne valeur.
Fonctions d'accès :
| QGeoPositionInfoSource::PositioningMethods | preferredPositioningMethods() const |
| virtual void | setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods) |
Voir également supportedPositioningMethods().
[read-only] sourceName : QString
Cette propriété contient le nom unique de l'implémentation de la source de position utilisée.
C'est ce même nom qui peut être transmis à createSource() afin de créer une nouvelle instance d'une implémentation particulière de la source de position.
Fonctions d'accès :
| QString | sourceName() const |
[bindable] updateInterval : int
Remarque : Cette propriété prend en charge les liaisons QProperty.
Cette propriété indique l'intervalle requis en millisecondes entre chaque mise à jour.
Si l'intervalle de mise à jour n'est pas défini (ou est défini à 0), la source fournira des mises à jour aussi souvent que nécessaire.
Si l'intervalle de mise à jour est défini, la source fournira des mises à jour à un intervalle aussi proche que possible de l'intervalle demandé. Si l'intervalle demandé est inférieur à minimumUpdateInterval(), l'intervalle minimum est utilisé à la place.
Les modifications de l'intervalle de mise à jour interviendront dès que possible, mais le temps nécessaire à la modification peut varier d'une implémentation à l'autre. La prise en compte ou non du temps écoulé depuis l'intervalle précédent dans le nouvel intervalle dépend également de l'implémentation.
La valeur par défaut de cette propriété est 0.
Remarque : Les implémentations de sous-classes doivent appeler l'implémentation de base de setUpdateInterval() afin que updateInterval() renvoie la valeur correcte.
Note : Cette propriété ne peut pas être utilisée pour régler la fréquence de mise à jour sur iOS et macOS, car leurs API n'offrent pas cette possibilité. Sur ces systèmes, ce paramètre est uniquement utilisé pour définir UpdateTimeoutError et déclencher un signal errorOccurred si la mise à jour n'est pas reçue dans l'intervalle souhaité.
Fonctions d'accès :
| int | updateInterval() const |
| virtual void | setUpdateInterval(int msec) |
Documentation des fonctions membres
[explicit] QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)
Crée une source de position avec l'adresse parent spécifiée.
[virtual noexcept] QGeoPositionInfoSource::~QGeoPositionInfoSource()
Détruit la source de position.
[static] QStringList QGeoPositionInfoSource::availableSources()
Renvoie une liste des plugins source disponibles. Cela inclut tous les plugins backend par défaut pour la plateforme actuelle.
[virtual, since Qt 5.14] QVariant QGeoPositionInfoSource::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. Les propriétés spécifiques au backend prises en charge sont répertoriées et décrites dans Qt Positioning plugins#Default plugins.
Cette fonction a été introduite dans Qt 5.14.
Voir également setBackendProperty.
[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)
Crée et renvoie une source de position avec l'adresse parent qui lit les sources de données de localisation par défaut du système, ou le plugin avec la plus haute priorité disponible.
Retourne nullptr si le système n'a pas de source de position par défaut, si aucun plugin valide n'a pu être trouvé ou si l'utilisateur n'a pas la permission d'accéder à la position actuelle.
[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap ¶meters, QObject *parent)
Crée et renvoie une source de position avec l'adresse parent qui lit les sources de données de localisation par défaut du système, ou le plugin avec la plus haute priorité disponible.
Retourne nullptr si le système n'a pas de source de position par défaut, si aucun plugin valide n'a pu être trouvé ou si l'utilisateur n'a pas la permission d'accéder à la position actuelle.
Cette méthode transmet parameters à la fabrique pour configurer la source.
Cette fonction a été introduite dans Qt 5.14.
[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)
Crée et renvoie une source de position avec l'adresse parent, en chargeant le plugin nommé sourceName.
Renvoie nullptr si le plugin est introuvable.
[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent)
Crée et renvoie une source de position avec l'adresse parent, en chargeant le plugin nommé sourceName.
Elle renvoie nullptr si le plugin est introuvable.
Cette méthode transmet parameters à la fabrique pour configurer la source.
Cette fonction a été introduite dans Qt 5.14.
[pure virtual] QGeoPositionInfoSource::Error QGeoPositionInfoSource::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 à startUpdates() ou requestUpdate().
[signal] void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)
Ce signal est émis lorsqu'une erreur s'est produite. Le paramètre positioningError décrit le type d'erreur qui s'est produite.
[pure virtual] QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const
Renvoie une mise à jour contenant la dernière position connue, ou une mise à jour nulle si aucune n'est disponible.
Si fromSatellitePositioningMethodsOnly est vrai, la dernière position connue reçue d'une méthode de positionnement par satellite est renvoyée ; si aucune n'est disponible, une mise à jour nulle est renvoyée.
[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)
Si startUpdates() ou requestUpdate() est appelé, ce signal est émis lorsqu'une mise à jour est disponible.
La valeur update contient la valeur de la nouvelle mise à jour.
[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = 0)
Tente d'obtenir la position actuelle et émet positionUpdated() avec cette information. Si la position actuelle ne peut être trouvée dans le délai donné timeout (en millisecondes) ou si timeout est inférieur à la valeur renvoyée par minimumUpdateInterval(), un signal errorOccurred() avec UpdateTimeoutError est émis.
Si le délai d'attente est égal à zéro, le délai d'attente est fixé par défaut à une durée raisonnable correspondant à la source.
Cela ne fait rien si une autre demande de mise à jour est en cours. Cependant, elle peut être appelée même si startUpdates() a déjà été appelé et que des mises à jour régulières sont en cours.
Si la source utilise plusieurs méthodes de positionnement, elle tente d'obtenir la position actuelle à partir de la méthode de positionnement la plus précise dans le délai imparti.
Remarque : depuis Qt6, cette méthode réinitialise toujours la dernière erreur à NoError avant de demander la position.
Remarque : pour comprendre comment utiliser cette méthode à partir d'un service Android, voir Qt Positioning sur Android.
[virtual, since Qt 5.14] bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)
Définit la propriété spécifique au backend nommée name à value. Renvoie true en cas de succès, false dans le cas contraire. Les propriétés spécifiques au backend peuvent être utilisées pour configurer le comportement du sous-système de positionnement au moment de l'exécution. Les propriétés spécifiques au backend prises en charge sont répertoriées et décrites dans Qt Positioning plugins#Default plugins.
Cette fonction a été introduite dans Qt 5.14.
Voir également backendProperty.
[pure virtual slot] void QGeoPositionInfoSource::startUpdates()
Commence à émettre des mises à jour à intervalles réguliers, comme spécifié par setUpdateInterval().
Si setUpdateInterval() n'a pas été appelé, la source émettra des mises à jour dès qu'elles seront disponibles.
Un signal errorOccurred() avec UpdateTimeoutError sera émis si cette sous-classe QGeoPositionInfoSource détermine qu'elle ne sera pas en mesure de fournir des mises à jour régulières. Cela peut se produire en cas de perte des coordonnées d'un satellite ou de détection d'une erreur matérielle. Les mises à jour de position reprendront si les données sont disponibles ultérieurement. L'erreur UpdateTimeoutError ne sera émise qu'après la reprise des mises à jour périodiques.
Remarque : depuis Qt6, cette méthode réinitialise toujours la dernière erreur à NoError avant de lancer les mises à jour.
Note : Pour comprendre comment utiliser cette méthode à partir d'un service Android, voir Qt Positioning sur Android.
Sur iOS, à partir de la version 8, Core Location framework requiert des entrées supplémentaires dans l'Info.plist de l'application avec les clés NSLocationAlwaysUsageDescription ou NSLocationWhenInUseUsageDescription et une chaîne à afficher dans l'invite d'autorisation. La clé NSLocationWhenInUseUsageDescription est utilisée pour demander l'autorisation d'utiliser les services de localisation lorsque l'application est au premier plan. La clé NSLocationAlwaysUsageDescription est utilisée pour demander l'autorisation d'utiliser les services de localisation lorsque l'application est en cours d'exécution (au premier plan et en arrière-plan). Si les deux entrées sont définies, NSLocationWhenInUseUsageDescription est prioritaire en mode avant-plan.
[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()
Arrête d'émettre des mises à jour à intervalles réguliers.
[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const
Renvoie les méthodes de positionnement disponibles pour cette source. La disponibilité est définie comme étant utilisable au moment de l'appel de cette fonction. Par conséquent, les paramètres de l'utilisateur tels que la désactivation du service de localisation ou les limitations des fournisseurs de position par satellite sont reflétés par cette fonction. Les notifications d'exécution en cas de changement d'état peuvent être obtenues via supportedPositioningMethodsChanged().
Toutes les plateformes ne distinguent pas les différentes méthodes de positionnement ou ne communiquent pas la configuration utilisateur actuelle de l'appareil. Le tableau suivant donne un aperçu de la situation actuelle des plateformes :
| Plateforme | Brève description |
|---|---|
| Android | L'état du fournisseur individuel et l'état général du service de localisation sont connus et communiqués lorsque le service de localisation est actif. |
| GeoClue | Le renvoi de l'adresse AllPositioningMethods est obligatoire. |
| GeoClue2 | Les fournisseurs individuels ne sont pas distinguables mais les services de localisation désactivés sont reflétés. |
| iOS | Le choix difficile est de toujours renvoyer AllPositioningMethods. |
| macOS | Le choix difficile est de toujours renvoyer AllPositioningMethods. |
| Windows (UWP) | Les fournisseurs individuels ne sont pas distingués, mais les services de localisation désactivés sont pris en compte. |
Voir également supportedPositioningMethodsChanged() et setPreferredPositioningMethods().
[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()
Ce signal est émis lorsque les méthodes de positionnement prises en charge ont changé. La cause de ce changement peut être l'activation/désactivation des services de localisation par l'utilisateur ou la restriction des services de localisation à certains types (par exemple, GPS uniquement). Il convient de noter que les modifications des méthodes de positionnement prises en charge ne peuvent pas être détectées sur toutes les plates-formes. supportedPositioningMethods() fournit une vue d'ensemble de la prise en charge actuelle des plates-formes.
Cette fonction a été introduite dans Qt 5.12.
© 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.