Sur cette page

PositionSource QML Type

Le type PositionSource fournit la position actuelle de l'appareil. En savoir plus...

Import Statement: import QtPositioning

Propriétés

Méthodes

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 objet de type Position, qui contient tous les paramètres standard généralement fournis par le GPS et d’autres systèmes similaires, notamment la longitude, la latitude, la vitesse et les détails relatifs à la précision.

Comme différentes sources de position sont disponibles sur différentes plateformes et différents appareils, celles-ci sont classées par type de base (Satellite, NonSatellite et AllPositioningMethods). Les méthodes disponibles pour la plateforme actuelle peuvent être répertoriées dans la propriété supportedPositioningMethods.

Pour indiquer quelles méthodes conviennent à votre application, définissez la propriété ` preferredPositioningMethods `. Si les méthodes préférées ne sont pas disponibles, la source par défaut de données de localisation 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 plateforme 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 à quelle fréquence votre application souhaite recevoir des mises à jour de position. Les méthodes ` start()`, ` stop()` et ` update()` permettent de contrôler le fonctionnement de `PositionSource`, tout comme la propriété ` active `, dont la définition équivaut à l’appel de ` 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 PositionSource simple utilisée pour recevoir des mises à jour toutes les secondes et afficher 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 de fonctionnement

Comme mentionné ci-dessus, PositionSource propose 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é liable ` active ` est utilisée pour contrôler l’objet `PositionSource`, mais que les méthodes ` start()` ou ` stop()` sont ensuite appelées depuis une autre partie du code, la liaison est rompue, ce qui peut entraîner, par exemple, qu’un élément de l’interface utilisateur ne soit plus lié à aucun objet sous-jacent.

Prenons l’exemple suivant de code incorrect, dans lequel la propriété ` active ` est liée à l’état de la case à cocher (`CheckBox`), et où l’appel de ` 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()
            }
        }
    }
}

Dès que l’on clique sur le bouton « Stop », la méthode ` stop()` est exécutée, et la liaison de la propriété ` active ` est rompue. À ce stade, l’élément d’interface utilisateur `CheckBox` ne contrôle plus l’objet `PositionSource`.

Une solution simple dans ce cas consiste à mettre à jour l’état de la case à cocher depuis le gestionnaire de l’événement « onClicked ». Dès que la case à cocher est décochée, la propriété « active » en est informée et l’état de l’objet « PositionSource » est mis à jour en conséquence. L’interface utilisateur se trouve alors é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 position n’a aucun effet sur les liaisons de la propriété ` active ` ; elles peuvent donc être utilisées conjointement sans aucun problème.

Voir également QtPositioning::Position, QGeoPositionInfoSource, PluginParameter et Propriétés liables Qt.

Documentation sur les propriétés

active : bool

Cette propriété indique si la source de position est active. Définir cette propriété sur « false » revient à appeler la méthode stop, tandis que la définir sur « true » revient à appeler la méthode start.

Voir également start, stop et update.

name : string

Cette propriété contient le nom interne unique du plugin fournissant actuellement les informations de position.

La définition de cette propriété indique à l'PositionSource d'utiliser un fournisseur de positionnement spécifique. Si l'PositionSource est actif au moment où la propriété « name » est modifiée, il sera désactivé. Si le fournisseur de positionnement spécifié ne peut pas être chargé, la source de position deviendra invalide.

La modification de la propriété « name » peut entraîner la modification des propriétés « updateInterval », « supportedPositioningMethods » et « preferredPositioningMethods » également.

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 comporte différentes variables membres de position, dont la validité peut être vérifiée à l’aide de fonctions de validité appropriées (par exemple, il arrive parfois qu’une mise à jour ne contienne pas de données de vitesse ou d’altitude).

Toutefois, dès qu’un signal de type « positionChanged » a été reçu, on peut considérer qu’au moins les propriétés position::coordinate::latitude, position::coordinate::longitude et position::timestamp sont valides.

Voir également start, stop et update.

preferredPositioningMethods : enumeration

Cette propriété contient les méthodes de positionnement privilégiées de la source actuelle.

ConstanteDescription
PositionSource.NoPositioningMethodsAucune méthode de positionnement n'est privilégiée.
PositionSource.SatellitePositioningMethodsLes méthodes de positionnement par satellite, telles que le GPS, doivent être privilégiées.
PositionSource.NonSatellitePositioningMethodsLes méthodes de positionnement non satellitaires doivent être privilégiées.
PositionSource.AllPositioningMethodsToutes les méthodes de positionnement sont acceptables.

sourceError : enumeration

Cette propriété contient l'erreur qui s'est produite en dernier avec l'PositionSource.

ConstanteDescription
PositionSource.AccessErrorL'établissement de la connexion au backend de localisation distant a échoué car l'application ne disposait pas des privilèges requis.
PositionSource.ClosedErrorLe backend de localisation 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.
PositionSource.NoErrorAucune erreur ne s’est produite.
PositionSource.UnknownSourceErrorUne erreur non identifiée s'est produite.
PositionSource.UpdateTimeoutErrorLa position actuelle n’a pas pu être récupérée dans le délai imparti, ou ce service 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.

ConstanteDescription
PositionSource.NoPositioningMethodsAucune méthode de positionnement prise en charge (aucune source).
PositionSource.SatellitePositioningMethodsLes méthodes de positionnement par satellite, telles que le GPS, sont prises en charge.
PositionSource.NonSatellitePositioningMethodsLes méthodes de positionnement non basées sur les satellites sont prises en charge.
PositionSource.AllPositioningMethodsLes méthodes de positionnement par satellite et non basées sur les satellites sont prises en charge.

updateInterval : int

Cette propriété définit l'intervalle souhaité entre les mises à jour (en millisecondes).

Voir également QGeoPositionInfoSource::updateInterval().

valid : bool

Cette propriété est définie sur « true » si l'objet ` PositionSource ` a obtenu un plugin backend valide pour fournir des données. Si elle est définie sur « false », 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 des méthodes

[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 existe. Dans le cas contraire, y compris si la fonction est appelée sur un objet PositionSource non initialisé, 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 méthode a été introduite dans la version 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 » sur « value ». Renvoie « true » en cas de succès, « false » dans le cas contraire, y compris si la fonction est appelée sur un objet « PositionSource » non initialisé. 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 méthode a été introduite dans Qt Positioning 5.14.

Voir également backendProperty et QGeoPositionInfoSource::setBackendProperty.

void start()

Demande des mises à jour à la source de localisation. Utilise l'updateInterval si celui-ci est défini ; sinon, l'intervalle par défaut est utilisé. Si aucune source n'est disponible, cette méthode n'a aucun effet.

Remarque : l'appel de cette méthode rompt les liaisons de la propriété active.

Voir également stop(), update() et active.

void stop()

Interrompt les mises à jour provenant de la source de localisation. Si aucune source n'est disponible ou si celle-ci n'est pas active, cette méthode n'a aucun effet.

Remarque : l'appel de cette méthode rompt les liaisons de la propriété ` active `.

Voir également start(), update() et active.

void update(int timeout)

Méthode pratique permettant de demander une mise à jour unique auprès 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 nécessaire pour recevoir une mise à jour, ou jusqu'à ce que la requête expire. Le délai d'expiration de la requête dépend de la source.

La durée d'expiration ( timeout ) est spécifiée en millisecondes. Si la durée d'expiration ( timeout ) est égale à zéro (valeur par défaut), le système utilise par défaut une durée d'expiration raisonnable adaptée à la source.

Voir également start(), stop() et active.

© 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.