Sur cette page

QGeoPositionInfoSource Class

La classe `QGeoPositionInfoSource` est une classe de base abstraite destinée à la diffusion des mises à jour de position. En savoir plus...

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

QNmeaPositionInfoSource

Types publics

enum Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError }
enum PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods }
flags PositioningMethods

Propriétés

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 &parameters, QObject *parent)
QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

Description détaillée

La fonction statique ` QGeoPositionInfoSource::createDefaultSource()` crée une source de position par défaut adaptée à la plate-forme, si une telle source est disponible. Sinon, `QGeoPositionInfoSource` vérifie si des plugins implémentant l'interface ` QGeoPositionInfoSourceFactory ` sont disponibles.

Les utilisateurs d’une sous-classe de QGeoPositionInfoSource peuvent demander la position actuelle à l’aide de requestUpdate(), ou démarrer et arrêter les mises à jour régulières de position à l’aide de startUpdates() et stopUpdates(). Lorsqu’une mise à jour est disponible, positionUpdated() est émis. La dernière position connue est accessible via lastKnownPosition().

Si des mises à jour régulières de la position sont nécessaires, la fonction setUpdateInterval() permet de 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 :

// 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 la valeur 0.

Remarque : la source de position peut imposer une valeur minimale pour les intervalles de mise à jour, telle que renvoyée par la méthode ` minimumUpdateInterval()`.

Remarque : pour utiliser cette classe depuis un service Android, consultez la section « Qt Positioning » sur Android.

Documentation sur les types de membres

enum QGeoPositionInfoSource::Error

L'énumération Error représente les erreurs susceptibles de se produire.

ConstanteValeurDescription
QGeoPositionInfoSource::AccessError0L'établissement de la connexion avec le backend de localisation à distance a échoué car l'application ne disposait pas des autorisations requises.
QGeoPositionInfoSource::ClosedError1Le 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 est réactivé, les mises à jour régulières reprennent.
QGeoPositionInfoSource::NoError3Aucune erreur ne s'est produite.
QGeoPositionInfoSource::UnknownSourceError2Une erreur non identifiée s'est produite.
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2)4Si la méthode ` requestUpdate()` a été appelée, cette erreur indique que la position actuelle n'a pas pu être récupérée dans le délai d'attente spécifié. Si la méthode ` startUpdates()` a été appelée, cette erreur indique que cette sous-classe de ` QGeoPositionInfoSource ` a déterminé qu'elle ne serait plus en mesure de fournir de nouvelles mises à jour régulières. Dans ce dernier cas, l'erreur ne sera plus générée tant que les mises à jour régulières n'auront pas repris.

enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods

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

ConstanteValeurDescription
QGeoPositionInfoSource::NoPositioningMethods0x00000000Aucune des méthodes de positionnement.
QGeoPositionInfoSource::SatellitePositioningMethods0x000000ffMéthodes de localisation par satellite, telles que le GPS ou le GLONASS.
QGeoPositionInfoSource::NonSatellitePositioningMethods0xffffff00Autres méthodes de positionnement, telles que l'identifiant de cellule 3GPP ou le positionnement par Wi-Fi.
QGeoPositionInfoSource::AllPositioningMethods0xffffffffMéthodes de positionnement par satellite dès qu'elles sont disponibles. Sinon, méthodes de positionnement non satellitaires.

Le type PositioningMethods est une définition de type pour QFlags<PositioningMethod>. Il stocke une combinaison OU de valeurs PositioningMethod.

Documentation de la propriété

[read-only] minimumUpdateInterval : int

Cette propriété indique le temps minimum (en millisecondes) nécessaire pour récupérer une mise à jour de position.

Il s'agit de la valeur minimale acceptée par les fonctions setUpdateInterval() et requestUpdate().

Fonctions d'accès :

virtual int minimumUpdateInterval() const = 0

[bindable] preferredPositioningMethods : PositioningMethods

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Définit les méthodes de positionnement préférées pour cette source.

Si les nouvelles méthodes incluent une méthode non prise en charge par la source, celle-ci sera ignorée.

Si, parmi les nouvelles méthodes, aucune n'est disponible ou prise en charge par la source, les méthodes préférées seront définies comme 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émentationsdes sous-classes doivent appeler l’implémentation de base de ` setPreferredPositioningMethods() ` afin de garantir que ` preferredPositioningMethods() ` renvoie la valeur correcte.

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 actuellement utilisée.

Il s'agit du même nom que celui qui peut être transmis à la fonction ` createSource()` afin de créer une nouvelle instance d'une implémentation de source de position donnée.

Fonctions d'accès :

QString sourceName() const

[bindable] updateInterval : int

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété contient l'intervalle demandé, en millisecondes, entre chaque mise à jour.

Si l'intervalle de mise à jour n'est pas défini (ou est défini sur 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 à la valeur renvoyée par la fonction minimumUpdateInterval(), l’intervalle minimum est utilisé à la place.

Les modifications apportées à l’intervalle de mise à jour seront effectives dès que possible, mais le temps nécessaire à cette mise à jour peut varier selon les implémentations. Le fait que le temps écoulé depuis l’intervalle précédent soit pris en compte ou non 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émentationsdes sous-classes doivent appeler l’implémentation de base de ` setUpdateInterval() ` afin que ` updateInterval() ` renvoie la valeur correcte.

Remarque : 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 sert uniquement à 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'parent spécifiée.

[virtual noexcept] QGeoPositionInfoSource::~QGeoPositionInfoSource()

Supprime la source de position.

[static] QStringList QGeoPositionInfoSource::availableSources()

Renvoie une liste des plugins source disponibles. Celle-ci inclut tout plugin 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 existe. Sinon, la valeur renvoyée sera invalide. Les propriétés spécifiques aux backends prises en charge sont répertoriées et décrites à l'adresse 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'parent on spécifiée, qui utilise les sources de données de localisation par défaut du système ou le plugin ayant la priorité la plus élevée parmi ceux disponibles.

Renvoie « nullptr » si le système ne dispose d'aucune source de position par défaut, si aucun plugin valide n'a pu être trouvé ou si l'utilisateur ne dispose pas des autorisations nécessaires pour accéder à la position actuelle.

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap &parameters, QObject *parent)

Crée et renvoie une source de position avec l'parent spécifiée, qui utilise les sources de données de localisation par défaut du système ou le plugin ayant la priorité la plus élevée disponible.

Renvoie ` nullptr ` si le système ne dispose d’aucune source de position par défaut, si aucun plugin valide n’a pu être trouvé ou si l’utilisateur ne dispose pas des autorisations nécessaires pour accéder à la position actuelle.

Cette méthode transmet l'parameters à l'usine 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'parent spécifiée, 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 &parameters, QObject *parent)

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

Renvoie ` nullptr ` si le plugin est introuvable.

Cette méthode transmet parameters à l'usine pour configurer la source.

Cette fonction a été introduite dans Qt 5.14.

[pure virtual] QGeoPositionInfoSource::Error QGeoPositionInfoSource::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 startUpdates() ou requestUpdate().

[signal] void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)

Ce signal est émis lorsqu'une erreur s'est produite. Le paramètre « positioningError » indique 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 la variable « fromSatellitePositioningMethodsOnly » est à « true », cette fonction renvoie la dernière position connue reçue via une méthode de positionnement par satellite ; si aucune n'est disponible, une mise à jour nulle est renvoyée.

[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)

Si la fonction ` startUpdates()` ou ` requestUpdate()` est appelée, ce signal est émis lorsqu’une mise à jour est disponible.

La variable ` 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 d'émettre un signal « positionUpdated() » avec cette information. Si la position actuelle ne peut être trouvée dans le délai spécifié par « timeout » (en millisecondes) ou si « timeout » est inférieur à la valeur renvoyée par « minimumUpdateInterval() », un signal « errorOccurred() » est émis avec la valeur « UpdateTimeoutError ».

Si le délai d’expiration est nul, il est défini par défaut sur une durée raisonnable, adaptée à la source.

Cette fonction n’a aucun effet si une autre requête de mise à jour est en cours. Elle peut toutefois être appelée même si startUpdates() a déjà été appelée 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 depuis un service Android, consultez la section « 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 » sur la valeur « 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 lors de l'exécution. Les propriétés spécifiques au backend prises en charge sont répertoriées et décrites à l'adresse 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 la fonction setUpdateInterval().

Si la fonction setUpdateInterval() n'a pas été appelée, la source émettra des mises à jour dès qu'elles seront disponibles.

Un signal errorOccurred() portant l’ UpdateTimeoutError sera émis si cette sous-classe de 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 de la position par satellite ou si une erreur matérielle est détectée. Les mises à jour de position reprendront dès que les données seront à nouveau disponibles. L’erreur UpdateTimeoutError ne sera pas réémise avant 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.

Remarque : pour comprendre comment utiliser cette méthode depuis un service Android, consultez la section « Qt Positioning » sur Android.

Sur iOS, à partir de la version 8, le framework Core Location nécessite des entrées supplémentaires dans le fichier Info.plist de l’application, avec les clés NSLocationAlwaysUsageDescription ou NSLocationWhenInUseUsageDescription et une chaîne de caractères à afficher dans la fenêtre 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 dès que l’application est en cours d’exécution (aussi bien au premier plan qu’en arrière-plan). Si les deux entrées sont définies, NSLocationWhenInUseUsageDescription a la priorité en mode premier plan.

[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()

Cesse d'émettre des mises à jour à intervalles réguliers.

[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const

Renvoie les méthodes de localisation disponibles pour cette source. La disponibilité est définie comme étant l'état « utilisable » au moment de l'appel de cette fonction. Par conséquent, les paramètres utilisateur, tels que la désactivation du service de localisation ou les restrictions imposées aux fournisseurs de localisation par satellite, sont pris en compte par cette fonction. Des notifications d'exécution signalant les changements d'état peuvent être obtenues via la fonction ` supportedPositioningMethodsChanged()`.

Toutes les plateformes ne distinguent pas les différentes méthodes de localisation ni ne communiquent la configuration actuelle de l’appareil par l’utilisateur. Le tableau suivant donne un aperçu de la situation actuelle des plateformes :

PlateformeBrève description
AndroidL'état de chaque fournisseur et l'état général du service de localisation sont connus et communiqués lorsque le service de localisation est actif.
GeoClueCodé en dur pour toujours renvoyer « AllPositioningMethods ».
GeoClue2Les fournisseurs individuels ne sont pas identifiables, mais la désactivation des services de localisation est prise en compte.
iOSProgrammé pour toujours renvoyer « AllPositioningMethods ».
macOSProgrammé pour toujours renvoyer « AllPositioningMethods ».
Windows (UWP)Les fournisseurs individuels ne sont pas identifiables, mais la désactivation des services de localisation est prise en compte.

Voir également supportedPositioningMethodsChanged() et setPreferredPositioningMethods().

[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()

Ce signal est émis lorsque les méthodes de localisation prises en charge changent. Ce changement peut être dû au fait qu'un utilisateur a activé ou désactivé les services de localisation, ou qu'il a limité ces derniers à certains types (par exemple, GPS uniquement). Notez que les modifications apportées aux méthodes de localisation prises en charge ne peuvent pas être détectées sur toutes les plateformes. La fonction ` supportedPositioningMethods()` fournit un aperçu de la prise en charge actuelle par les différentes plateformes.

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.