PositionSource QML Type
Le type PositionSource fournit la position actuelle de l'appareil. Plus d'informations...
| Import Statement: | import QtPositioning |
Propriétés
- active : bool
- name : string
- parameters : list<PluginParameter>
(since QtPositioning 5.14) - position : Position
- preferredPositioningMethods : enumeration
- sourceError : enumeration
- supportedPositioningMethods : enumeration
- updateInterval : int
- valid : bool
Méthodes
- var backendProperty(string name)
(since Qt Positioning 5.14) - bool setBackendProperty(string name, var value)
(since Qt Positioning 5.14) - void start()
- void stop()
- void update(int timeout)
Description détaillée
Le type PositionSource fournit des informations sur la position actuelle de l'appareil de l'utilisateur. La position est disponible sous la forme d'un type Position, qui contient tous les paramètres standard généralement disponibles pour le GPS et d'autres systèmes similaires, y compris la longitude, la latitude, la vitesse et les détails de précision.
Étant donné que différentes sources de position sont disponibles sur différentes plateformes et différents appareils, elles sont classées en fonction de leur type de base (Satellite, Non-Satellite et AllPositioningMethods). Les méthodes disponibles pour la plateforme actuelle peuvent être énumérées dans la propriété supportedPositioningMethods.
Pour indiquer les méthodes qui conviennent à votre application, définissez la propriété preferredPositioningMethods. Si les méthodes préférées ne sont pas disponibles, la source de données de localisation par défaut pour la plateforme sera choisie à la place. Si aucune source par défaut n'est disponible (parce qu'aucune n'est installée pour la plate-forme d'exécution ou parce qu'elle est désactivée), la propriété valid sera définie sur false.
La propriété updateInterval peut alors être utilisée pour indiquer la fréquence à laquelle votre application souhaite recevoir des mises à jour de position. Les méthodes start(), stop() et update() peuvent être utilisées pour contrôler le fonctionnement de PositionSource, ainsi que la propriété active, qui, lorsqu'elle est définie, équivaut à appeler start() ou stop().
Lorsque le PositionSource est actif, les mises à jour de position peuvent être récupérées soit en utilisant simplement la propriété position dans une liaison (en tant que valeur de la propriété d'un autre élément), soit en fournissant une implémentation du gestionnaire de signal onPositionChanged.
Exemple d'utilisation
L'exemple suivant montre une source de position simple utilisée pour recevoir des mises à jour toutes les secondes et imprimer la longitude et la latitude sur la console.
PositionSource { id: src updateInterval: 1000 active: true onPositionChanged: { var coord = src.position.coordinate; console.log("Coordinate:", coord.longitude, coord.latitude); } }
Contrôle de l'état des opérations
Comme mentionné ci-dessus, PositionSource fournit deux façons de contrôler son état de fonctionnement :
Remarque : il est très important de ne pas mélanger ces approches. Si une propriété active liante est utilisée pour contrôler l'objet PositionSource, mais qu'ensuite start() ou stop() est appelé à partir d'une autre partie du code, la liaison est rompue, ce qui peut entraîner, par exemple, un élément d'interface utilisateur qui n'est plus connecté à aucun objet sous-jacent.
Prenons l'exemple suivant de mauvais code où la propriété active est liée à l'état CheckBox et où l'appel à stop() dans le gestionnaire de signal onClicked rompt cette liaison.
Window { width: 640 height: 480 visible: true PositionSource { id: posSource name: "geoclue2" active: cb.checked } Column { anchors.centerIn: parent spacing: 20 CheckBox { id: cb } Button { id: btn text: "Stop" onClicked: { posSource.stop() } } } }
Une fois que le bouton Stop est cliqué, stop() est exécuté et la liaison pour la propriété active est rompue. À ce stade, l'élément CheckBox de l'interface utilisateur ne contrôle plus l'objet PositionSource.
Dans ce cas, une solution simple consiste à mettre à jour l'état de la CheckBox à partir du gestionnaire onClicked. Dès que la CheckBox est décochée, la propriété active est notifiée et l'état de l'objet PositionSource est mis à jour en conséquence. L'interface utilisateur sera également dans un état cohérent.
Button { id: btn text: "Stop" onClicked: { cb.checked = false } }
Remarque : l'utilisation de update() pour demander une seule mise à jour de la position n'a aucun effet sur les liaisons de la propriété active, de sorte qu'elles peuvent être utilisées ensemble sans problème.
Voir aussi QtPositioning::Position, QGeoPositionInfoSource, PluginParameter, et Qt Bindable Properties.
Documentation sur les propriétés
active : bool
Cette propriété indique si la source de position est active. La définition de cette propriété à false équivaut à l'appel de stop, et la définition de cette propriété à true équivaut à l'appel de start.
Voir également start, stop, et update.
name : string
Cette propriété contient le nom interne unique du plugin qui fournit actuellement des informations sur la position.
La définition de cette propriété fait en sorte que le site PositionSource utilise un fournisseur de positionnement particulier. Si le site PositionSource est actif au moment où la propriété name est modifiée, il devient inactif. Si le fournisseur de positionnement spécifié ne peut pas être chargé, la source de position devient invalide.
La modification de la propriété name peut entraîner la modification des propriétés updateInterval, supportedPositioningMethods et preferredPositioningMethods.
parameters : list<PluginParameter> [default, since QtPositioning 5.14]
Cette propriété contient la liste des paramètres du plugin.
Cette propriété a été introduite dans QtPositioning 5.14.
position : Position
Cette propriété contient les dernières données de position connues. Il s'agit d'une propriété en lecture seule.
Le type Position possède différentes variables membres positionnelles, dont la validité peut être vérifiée à l'aide de fonctions de validité appropriées (par exemple, il arrive qu'une mise à jour ne contienne pas de données relatives à la vitesse ou à l'altitude).
Cependant, lorsqu'un signal positionChanged a été reçu, on peut supposer qu'au moins position::coordinate::latitude, position::coordinate::longitude et position::timestamp sont valides.
Voir aussi start, stop, et update.
preferredPositioningMethods : enumeration
Cette propriété contient les méthodes de positionnement préférées de la source actuelle.
| Constante | Description |
|---|---|
PositionSource.NoPositioningMethods | Aucune méthode de positionnement n'est privilégiée. |
PositionSource.SatellitePositioningMethods | Les méthodes de positionnement basées sur les satellites, telles que le GPS, doivent être privilégiées. |
PositionSource.NonSatellitePositioningMethods | Les méthodes non basées sur les satellites doivent être privilégiées. |
PositionSource.AllPositioningMethods | Toutes les méthodes de positionnement sont acceptables. |
sourceError : enumeration
Cette propriété contient la dernière erreur survenue sur le site PositionSource.
| Constante | Description de l'erreur |
|---|---|
PositionSource.AccessError | L'établissement de la connexion avec le backend de positionnement à distance a échoué parce que l'application ne disposait pas des privilèges requis. |
PositionSource.ClosedError | Le backend de positionnement 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. |
PositionSource.NoError | Aucune erreur ne s'est produite. |
PositionSource.UnknownSourceError | Une erreur non identifiée s'est produite. |
PositionSource.UpdateTimeoutError | La position actuelle n'a pas pu être récupérée dans le délai spécifié, ou le site PositionSource a déterminé qu'il ne serait pas en mesure de fournir d'autres mises à jour régulières. |
supportedPositioningMethods : enumeration
Cette propriété contient les méthodes de positionnement prises en charge par la source actuelle.
| Constante | Description |
|---|---|
PositionSource.NoPositioningMethods | Aucune méthode de positionnement n'est prise en charge (aucune source). |
PositionSource.SatellitePositioningMethods | Les méthodes de positionnement basées sur les satellites, telles que le GPS, sont prises en charge. |
PositionSource.NonSatellitePositioningMethods | Les méthodes non basées sur les satellites sont prises en charge. |
PositionSource.AllPositioningMethods | Les méthodes de positionnement basées sur les satellites et non basées sur les satellites sont toutes deux prises en charge. |
updateInterval : int
Cette propriété indique l'intervalle souhaité entre les mises à jour (en millisecondes).
Voir également QGeoPositionInfoSource::updateInterval().
valid : bool
Cette propriété est vraie si l'objet PositionSource a acquis un plugin backend valide pour fournir des données. Si elle est fausse, les autres méthodes de l'objet PositionSource n'auront aucun effet.
Les applications doivent vérifier cette propriété pour déterminer si le positionnement est disponible et activé sur la plateforme d'exécution, et réagir en conséquence.
Documentation de la méthode
[since Qt Positioning 5.14] var backendProperty(string name)
Renvoie la valeur de la propriété spécifique au backend nommée name, si elle est présente. Dans le cas contraire, y compris si elle est appelée sur un site PositionSource non initialisé, la valeur de retour 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 méthode a été introduite dans Qt Positioning 5.14.
Voir également setBackendProperty et QGeoPositionInfoSource::setBackendProperty.
[since Qt Positioning 5.14] bool setBackendProperty(string name, var value)
Définit la propriété spécifique au backend nommée name en value. Retourne true en cas de succès, false dans le cas contraire, y compris s'il est appelé sur un PositionSource non initialisé. 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 méthode a été introduite dans Qt Positioning 5.14.
Voir également backendProperty et QGeoPositionInfoSource::setBackendProperty.
void start()
Demande des mises à jour de la source de localisation. Utilise updateInterval s'il est défini, l'intervalle par défaut dans le cas contraire. Si aucune source n'est disponible, cette méthode n'a aucun effet.
Remarque : l'appel de cette méthode rompt les liens de la propriété active.
Voir également stop(), update() et active.
void stop()
Arrête les mises à jour de la source de localisation. Si aucune source n'est disponible ou si elle n'est pas active, cette méthode n'a aucun effet.
Remarque : l'appel de cette méthode rompt les liens de la propriété active.
Voir également start(), update() et active.
void update(int timeout)
Une méthode pratique pour demander une seule mise à jour de la source de localisation. Si aucune source n'est disponible, cette méthode n'a aucun effet.
Si la source de position n'est pas active, elle sera activée le temps de recevoir une mise à jour ou jusqu'à ce que la demande se termine. Le délai d'attente de la demande est spécifique à la source.
L'adresse timeout est spécifiée en millisecondes. Si timeout est égal à zéro (valeur par défaut), le délai d'attente est fixé par défaut à un niveau raisonnable, en fonction de la 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.