Qt Sensors C++ Overview¶
Explains how to use the Qt Sensors C++ API.
Sensor Types¶
On a device there can be many types of sensors. Not all of the types that the Qt Sensors API supports may be available. There may also be types available that are not defined in the Qt Sensors API. The types of sensors available on a device is found using the
sensorTypes()function.For a list of built-in sensor types, see the Sensor Classes section below.
Common Conventions¶
Unless specified otherwise, Qt Sensors uses the Right Hand Cartesian coordinate system .
![]()
To allow for measurements in all 6 directions, negative values are used.
![]()
Where rotation around an axis is used, the rotation shall be expressed as a Right Hand rotation.
![]()
In general, sensor data is oriented relative to
nativeOrientation, that is to the top of the device when the device is held in its natural orientation (normally when the device logo appears the right side up). If values are to be displayed on the screen, the values may need to be transformed so that they match the user interface orientation. A sensor may define its data as being oriented to the UI. This will be noted in the documentation for the sensor.![]()
Using a Sensor¶
The life cycle of a
QSensoris typically:
Create an instance of
QSensoror one of its sub-classes on the stack or heap.Setup as required by the application.
Start receiving values.
Sensor data is used by the application.
Stop receiving values.
Here is an example of creating a sensor on the heap and on the stack.
// On the heap (deleted when this object is deleted) QAccelerometer *sensor = new QAccelerometer(this); // On the stack (deleted when the current scope ends) QOrientationSensor orient_sensor;
Accessing Sensor Data in a Generic Fashion¶
The preferred way to deal with sensor data is via the Reading Classes . However, sometimes this may not be possible. For example, you may be deploying an application to a device that has a new sensor type but no C++ header describing the reading class is available.
Thanks to Qt’s property system you can still access the sensor data. You need to know 3 pieces of information in order to do this:
The sensor type.
The property name or index.
The property type or a comparable type.
For example, here is an example of how you can access a property of the accelerometer. This code does not require any compile-time links to
QAccelerometerorQAccelerometerReading.// start the sensor QSensor sensor("QAccelerometer"); sensor.start(); // later QSensorReading *reading = sensor.reading(); qreal x = reading->property("x").value<qreal>(); qreal y = reading->value(1).value<qreal>();You can discover all of this information at runtime too. The sensor_explorer example shows you information about available sensors.
Front End, Back End¶
The Qt Sensors API has a front end, for application developers to use and a back end, where device implementors write code to access their hardware. As an application developer you do not need to access the back end though it may be useful to understand how it works.
Commands from the application are delivered through
QSensorand then down to the device plugin. Data comes back through theQSensorReadingclass.![]()
More information about the back end can be found in Qt Sensors Backend .
Main Classes¶
The primary classes that make up the Qt Sensors API.
PySide2.QtSensors.QSensorThe QSensor class represents a single hardware sensor.
PySide2.QtSensors.QSensorFilterThe QSensorFilter class provides an efficient callback facility for asynchronous notifications of sensor changes.
PySide2.QtSensors.QSensorReadingThe QSensorReading class holds the readings from the sensor.
Reading Classes¶
The best way to access sensor data is via one of these classes.
PySide2.QtSensors.QAccelerometerReadingThe QAccelerometerReading class reports on linear acceleration along the X, Y and Z axes.
PySide2.QtSensors.QAltimeterReadingThe QAltimeterReading class holds readings from the altimeter sensor.
PySide2.QtSensors.QAmbientLightReadingThe QAmbientLightReading class represents one reading from the ambient light sensor.
PySide2.QtSensors.QAmbientTemperatureReadingThe QAmbientTemperatureReading class holds readings of the ambient temperature.
PySide2.QtSensors.QCompassReadingThe QCompassReading class represents one reading from a compass.
PySide2.QtSensors.QDistanceReadingThe QDistanceReading class holds distance reading in cm from the proximity sensor.
PySide2.QtSensors.QGyroscopeReadingThe QGyroscopeReading class represents one reading from the gyroscope sensor.
PySide2.QtSensors.QHolsterReadingThe QHolsterReading class holds readings from the holster sensor.
PySide2.QtSensors.QHumidityReadingThe QHumidityReading class holds readings from the humidity sensor.
PySide2.QtSensors.QIRProximityReadingThe QIRProximityReading class holds readings from the IR proximity sensor.
PySide2.QtSensors.QLidReadingThe QLidReading class holds readings from the Lid sensor.
PySide2.QtSensors.QLightReadingThe QLightReading class represents one reading from the light sensor.
PySide2.QtSensors.QMagnetometerReadingThe QMagnetometerReading class represents one reading from the magnetometer.
PySide2.QtSensors.QOrientationReadingThe QOrientationReading class represents one reading from the orientation sensor.
PySide2.QtSensors.QPressureReadingThe QPressureReading class holds readings from the pressure sensor.
PySide2.QtSensors.QProximityReadingThe QProximityReading class represents one reading from the proximity sensor.
PySide2.QtSensors.QRotationReadingThe QRotationReading class represents one reading from the rotation sensor.
PySide2.QtSensors.QTapReadingThe QTapReading class represents one reading from the tap sensor.
PySide2.QtSensors.QTiltReadingThe QTiltReading class holds readings from the tilt sensor.
Sensor Classes¶
These classes provide convenience wrappers that reduce the need for casting. Each of these classes represents a sensor type that the Qt Sensors API knows about. Note that additional types may be made available at run-time. See Sensor Types for more information.
PySide2.QtSensors.QAccelerometerThe QAccelerometer class is a convenience wrapper around QSensor.
PySide2.QtSensors.QAltimeterThe QAltimeter class is a convenience wrapper around QSensor.
PySide2.QtSensors.QAmbientLightSensorThe QAmbientLightSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QAmbientTemperatureSensorThe QAmbientTemperatureSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QCompassThe QCompass class is a convenience wrapper around QSensor.
PySide2.QtSensors.QDistanceSensorThe QDistanceSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QGyroscopeThe QGyroscope class is a convenience wrapper around QSensor.
PySide2.QtSensors.QHolsterSensorThe QHolsterSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QHumiditySensorThe QHumiditySensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QIRProximitySensorThe QIRProximitySensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QLidSensorThe QLidSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QLightSensorThe QLightSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QMagnetometerThe QMagnetometer class is a convenience wrapper around QSensor.
PySide2.QtSensors.QOrientationSensorThe QOrientationSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QPressureSensorThe QPressureSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QProximitySensorThe QProximitySensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QRotationSensorThe QRotationSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QTapSensorThe QTapSensor class is a convenience wrapper around QSensor.
PySide2.QtSensors.QTiltSensorThe QTiltSensor class is a convenience wrapper around QSensor.
Filter Classes¶
As with the sensor classes, these provide convenience wrappers that reduce the need for casting.
PySide2.QtSensors.QAccelerometerFilterThe QAccelerometerFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QAltimeterFilterThe QAltimeterFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QAmbientLightFilterThe QAmbientLightFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QAmbientTemperatureFilterThe QAmbientTemperatureFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QCompassFilterThe QCompassFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QDistanceFilterThe QDistanceFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QGyroscopeFilterThe QGyroscopeFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QHolsterFilterThe QHolsterFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QHumidityFilterThe QHumidityFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QIRProximityFilterThe QIRProximityFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QLidFilterThe QLidFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QLightFilterThe QLightFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QMagnetometerFilterThe QMagnetometerFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QOrientationFilterThe QOrientationFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QPressureFilterThe QPressureFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QProximityFilterThe QProximityFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QRotationFilterThe QRotationFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QTapFilterThe QTapFilter class is a convenience wrapper around QSensorFilter.
PySide2.QtSensors.QTiltFilterThe QTiltFilter class is a convenience wrapper around QSensorFilter.
© 2022 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.