Auf dieser Seite

Sensor-Übersicht

Das Beispiel „Sensoren-Übersicht“ veranschaulicht die Verwendung von Sensoren anhand visueller Beispiele.

Hauptmenü der Sensor-Übersicht mit Schaltflächen für Beschleunigungsmesser, Näherungssensor, Kompass, Magnetometer und Gyroskop, wobei der Näherungssensor deaktiviert ist

Übersicht

Beim Start zeigt die Anwendung ein Menü mit Schaltflächen für die Unteransichten der einzelnen Sensoren an. Die Sensoransichten instanziieren den jeweiligen Sensor, zeigen die Sensorwerte als Zahlen an und visualisieren sie zudem mit einer einfachen grafischen Darstellung.

Die Hauptansicht zeigt den Titel mit dem Namen der Anwendung sowie eine Schaltfläche für jede Unteransicht, die mithilfe eines „ ColumnLayout “ gleichmäßig angeordnet sind. Ein „ StackView “ verwaltet die Navigation zwischen den Unteransichten und dem Hauptmenü. Die Anwendung prüft beim Start die Verfügbarkeit der Sensoren und deaktiviert die Schaltflächen für die Sensoren, die nicht verfügbar sind.

Hinweis: Zur Vereinfachung des Beispiels wird die Verfügbarkeit der Sensoren nur einmal beim Start überprüft.

Beschleunigungsmesser-Ansicht

Die Beschleunigungsmesser-Ansicht zeigt die aktuellen Beschleunigungswerte des Geräts an und verschiebt ein Bild um einen Betrag, der der Beschleunigung des Geräts entgegengesetzt ist, wodurch das Bild einen Trägheitseffekt erhält, der proportional zur Bewegung des Geräts ist.

Die Verschiebung des Bildes erfolgt in der Methode „ onReadingChanged “ des Beschleunigungssensors.

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
    }
}

Sobald ein neuer Beschleunigungsmesserwert vorliegt, werden die Koordinaten für die Bildverschiebung entsprechend aktualisiert.

Näherungssensor-Ansicht

Die Näherungsansicht zeigt ein Bild, das vergrößert wird, sobald der Näherungssensor des Geräts abgedeckt wird.

Kompassansicht

Die Kompassansicht zeigt ein Kompassbild, das entsprechend dem Messwert des Kompasssensors gedreht wird, sodass der Kompass nach Norden zeigt.

Magnetometer-Ansicht

Die Magnetometeransicht zeigt ein Magnetbild an, das um einen Winkel gedreht wird, der sich aus dem Drehwinkel des Vektors ergibt, der durch die x- und y-Werte des Magnetometers bestimmt wird. Dies führt in der Regel zu derselben Drehung wie beim Kompass und veranschaulicht einen Anwendungsfall, wie die Magnetometerwerte genutzt werden können. Da das Magnetometer Messwerte entlang aller drei Achsen liefert, besteht mehr Freiheit bei der Verwendung dieser Messwerte.

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)
    }
}

Gyroskop-Ansicht

Gyroskop-Ansicht mit einem gedrehten Qt-Logo, Schiebereglern für die X-, Y- und Z-Werte sowie einer Schaltfläche zum Zurücksetzen der Drehung

Die Gyroskopansicht zeigt ebenfalls ein Bild, das um drei Achsen um einen Winkel gedreht ist, der aus den Gyroskopmesswerten berechnet wird. Da das Gyroskop relative Drehänderungen um die drei Raumachsen liefert und die Zeit zwischen den Messwertaktualisierungen variieren kann, wird der Zeitpunkt der Messwerte gespeichert und die Drehänderung auf der Grundlage der zwischen den Messwertaktualisierungen verstrichenen Zeit normiert.

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
    }
}

Durch Drücken der Reset-Taste wird die Bilddrehung auf 0 zurückgesetzt.

Beispielprojekt @ 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.