Sur cette page

Présentation des capteurs

L'exemple Sensors Showcase démontre l'utilisation des capteurs à l'aide d'exemples visuels.

Vue d'ensemble

Au démarrage, l'application affiche un menu avec des boutons pour les sous-vues de chaque capteur. Les vues des capteurs instancient le capteur donné, affichent les valeurs du capteur sous forme de nombres et les visualisent également à l'aide d'une représentation graphique simple.

La vue principale affiche le titre avec le nom de l'application et un bouton pour chaque sous-vue disposé uniformément par un ColumnLayout. Un StackView gère la navigation entre les sous-vues et le menu principal. L'application vérifie la disponibilité des capteurs au démarrage et désactive les boutons pour les capteurs qui ne sont pas disponibles.

Remarque : pour simplifier l'exemple, la disponibilité des capteurs n'est vérifiée qu'une seule fois au cours du démarrage.

Vue de l'accéléromètre

La vue de l'accéléromètre montre les valeurs d'accélération actuelles de l'appareil et déplace l'image d'une quantité opposée à l'accélération de l'appareil, ce qui donne à l'image un effet d'inertie proportionnel au mouvement de l'appareil.

Le déplacement de l'image s'effectue selon la méthode de l'accéléromètre onReadingChanged.

Accelerometer {
    id: accelerometer

    property real x: 0
    property real y: 0
    property real z: 0

    active: true
    dataRate: 25

    onReadingChanged: {
        x = (reading as AccelerometerReading).x
        y = (reading as AccelerometerReading).y
        z = (reading as AccelerometerReading).z
        imageTranslation.x = -x * 10
        imageTranslation.y = y * 10
    }
}

À chaque nouvelle valeur de l'accéléromètre, les coordonnées de translation de l'image sont mises à jour en conséquence.

Vue de proximité

La vue de proximité affiche une image qui est agrandie lorsque le capteur de proximité de l'appareil est couvert.

Vue de la boussole

La vue de la boussole montre une image de boussole qui est tournée en fonction de la valeur de lecture du capteur de boussole, ce qui fait tourner la boussole vers le nord.

Vue magnétomètre

La vue du magnétomètre affiche une image d'aimant qui est tournée autour d'une valeur déterminée par l'angle de rotation du vecteur donné par les valeurs x et y du magnétomètre. Il en résulte généralement la même rotation que celle donnée par la boussole, ce qui illustre un cas d'utilisation des relevés du magnétomètre. Étant donné que le magnétomètre fournit des relevés sur les trois axes, la liberté d'utilisation de ces relevés est plus grande.

Magnetometer {
    id: magnetometer
    active: true
    dataRate: 25
    onReadingChanged: {
        root.magnetometerX = (reading as MagnetometerReading).x
        root.magnetometerY = (reading as MagnetometerReading).y
        root.magnetometerZ = (reading as MagnetometerReading).z
        root.magnetRotation =
            ((Math.atan2(root.magnetometerX, root.magnetometerY) / Math.PI) * 180)
    }
}

Vue du gyroscope

La vue gyroscopique montre également une image qui est tournée autour de trois axes avec une valeur calculée à partir des relevés du gyroscope. Étant donné que le gyroscope fournit une variation relative de la rotation autour des trois axes spatiaux et que le temps entre les mises à jour des relevés peut varier, l'heure des relevés est stockée et la variation de la rotation est normalisée sur la base du temps écoulé entre les mises à jour des relevés.

Gyroscope {
    id: gyroscope

    property var lastTimeStamp: 0
    property real x: 0
    property real y: 0
    property real z: 0

    active: true
    dataRate: 25

    onReadingChanged: {
        x = (reading as GyroscopeReading).x
        y = (reading as GyroscopeReading).y
        z = (reading as GyroscopeReading).z
        let firstCall = false
        if (lastTimeStamp == 0) {
            firstCall = true
        }
        let timeSinceLast = reading.timestamp - lastTimeStamp
        lastTimeStamp = reading.timestamp

        //Skipping the initial time jump from 0
        if (firstCall === true)
            return
        let normalizedX = x * (timeSinceLast / 1000000)
        imageXRotation.angle += normalizedX
        let normalizedY = y * (timeSinceLast / 1000000)
        imageYRotation.angle -= normalizedY
        let normalizedZ = z * (timeSinceLast / 1000000)
        imageZRotation.angle += normalizedZ
    }
}

En appuyant sur le bouton de réinitialisation, la rotation de l'image est remise à 0.

Exemple de projet @ code.qt.io

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