En esta página

Qt Sensors Visión general de C

Tipos de sensores

En un dispositivo puede haber muchos tipos de sensores. No todos los tipos que soporta la API Qt Sensors pueden estar disponibles. También puede haber tipos disponibles que no estén definidos en la API Qt Sensors. Los tipos de sensores disponibles en un dispositivo se encuentran utilizando la función QSensor::sensorTypes().

Para una lista de tipos de sensores incorporados, vea la sección de Clases de Sensores abajo.

Convenciones Comunes

A menos que se especifique lo contrario, Qt Sensors utiliza el sistema de coordenadas Cartesianas Derechas.

Para permitir mediciones en las 6 direcciones, se utilizan valores negativos.

Cuando se utilice la rotación alrededor de un eje, la rotación se expresará como rotación a la derecha.

En general, los datos de los sensores se orientan en relación con QScreen::nativeOrientation, es decir, con respecto a la parte superior del dispositivo cuando éste se sostiene en su orientación natural (normalmente cuando el logotipo del dispositivo aparece con el lado derecho hacia arriba). Si los valores se van a mostrar en la pantalla, puede ser necesario transformarlos para que coincidan con la orientación de la interfaz de usuario. Un sensor puede definir sus datos como orientados a la interfaz de usuario. Esto se indicará en la documentación del sensor.

Uso de un sensor

El ciclo de vida de un QSensor es típicamente:

  • Crear una instancia de QSensor o una de sus subclases en la pila o heap.
  • Configurarlo según lo requiera la aplicación.
  • Comienza a recibir valores.
  • La aplicación utiliza los datos del sensor.
  • Dejar de recibir valores.

He aquí un ejemplo de creación de un sensor en el montón y en la pila.

// 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;

Accediendo a los Datos del Sensor de una Manera Genérica

La manera preferida de tratar con los datos del sensor es a través de las Clases de Lectura. Sin embargo, a veces esto puede no ser posible. Por ejemplo, usted puede estar desplegando una aplicación a un dispositivo que tiene un nuevo tipo de sensor pero no hay disponible una cabecera C++ que describa la clase de lectura.

Gracias al sistema de propiedades de Qt aún puedes acceder a los datos del sensor. Necesitas conocer 3 piezas de información para poder hacer esto:

  • El tipo de sensor.
  • El nombre o índice de la propiedad.
  • El tipo de propiedad o un tipo comparable.

Por ejemplo, aquí hay un ejemplo de cómo puedes acceder a una propiedad del acelerómetro. Este código no requiere ningún enlace en tiempo de compilación a QAccelerometer o QAccelerometerReading.

// 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>();

También puedes descubrir toda esta información en tiempo de ejecución.

Descubrir sensores y leer propiedades en tiempo de ejecución

A veces puede ocurrir que no se conozcan los sensores disponibles en tiempo de desarrollo. Es posible descubrir qué sensores están disponibles como se ilustra a continuación:

QList<QSensor*> miListaSensores;for(const QByteArray &tipo: QSensor::sensorTypes()) {    qDebug() << "Found a sensor type:" << type;
   para(const QByteArray &identificador: QSensor::sensoresParaTipo(tipo)) {        qDebug() << "    " << "Found a sensor of that type:" << identifier;
        QSensor* sensor = new QSensor(type, this);  sensor->setIdentifier(identifier); mySensorList.append(sensor); } }

Además es posible descubrir los detalles de lectura de estos sensores, como se ilustra a continuación:

para (QSensor* sensor : miListaSensores) { const int firstProperty = QSensorReading::staticMetaObject.propertyOffset(); // Conectar primero al backend en caso de que start() no haya sido llamado todavía if (!sensor->connectToBackend()) continue;    qDebug() << "Sensor" << sensor->identifier() << "reading properties:";
    QSensorReading * lectura =  sensor->lectura(); si (lectura) { const QMetaObject * mo =  lectura->metaObjeto(); for(int i = primeraPropiedad; i <  mo->cuentaPropiedades(); ++i) { QByteArray nombre =  mo->propiedad(i).nombre();            qDebug() << "    " << name << reading->property(name).toByteArray();
        } } }

Front End, Back End

La API Qt Sensors tiene un front-end, para que lo utilicen los desarrolladores de aplicaciones, y un back-end, donde los implementadores de dispositivos escriben código para acceder a su hardware. Como desarrollador de aplicaciones no necesitas acceder al back-end, aunque puede ser útil entender cómo funciona.

Los comandos de la aplicación se envían a través de QSensor y luego al plugin del dispositivo. Los datos vuelven a través de la clase QSensorReading.

Puedes encontrar más información sobre el backend en Qt Sensors Backend.

Clases principales

Las clases principales que componen la API Qt Sensors.

QSensor

Representa un único sensor de hardware

QSensorFilter

Eficaz función de devolución de llamada para notificaciones asíncronas de cambios en el sensor

QSensorReading

Almacena las lecturas del sensor

Clases de lectura

La mejor manera de acceder a los datos del sensor es a través de una de estas clases.

QAccelerometerReading

Informa de la aceleración lineal a lo largo de los ejes X, Y y Z

QAmbientLightReading

Representa una lectura del sensor de luz ambiental

QAmbientTemperatureReading

Representa una lectura de la temperatura ambiente

QCompassReading

Representa una lectura de la brújula

QGyroscopeReading

Representa una lectura del sensor giroscópico

QHumidityReading

Representa una lectura del sensor de humedad

QLightReading

Representa una lectura del sensor de luz

QMagnetometerReading

Representa una lectura del magnetómetro

QOrientationReading

Representa una lectura del sensor de orientación

QPressureReading

Representa una lectura del sensor de presión

QProximityReading

Representa una lectura del sensor de proximidad

QRotationReading

Representa una lectura del sensor de rotación

QTiltReading

Representa una lectura del sensor de inclinación

Clases de sensores

Estas clases proporcionan envolturas de conveniencia que reducen la necesidad de casting. Cada una de estas clases representa un tipo de sensor que la API Qt Sensors conoce. Note que tipos adicionales pueden estar disponibles en tiempo de ejecución. Vea Tipos de Sensor para más información.

QAccelerometer

Envoltura de conveniencia alrededor de QSensor

QAmbientLightSensor

Envoltura de conveniencia alrededor de QSensor

QAmbientTemperatureSensor

Envoltura de conveniencia alrededor de QSensor

QCompass

Envoltura de conveniencia alrededor de QSensor

QGyroscope

Convenience wrapper alrededor de QSensor

QHumiditySensor

Convenience wrapper alrededor de QSensor

QLightSensor

Convenience wrapper alrededor de QSensor

QMagnetometer

Convenience wrapper alrededor de QSensor

QOrientationSensor

Convenience wrapper alrededor de QSensor

QPressureSensor

Convenience wrapper alrededor de QSensor

QProximitySensor

Convenience wrapper alrededor de QSensor

QRotationSensor

Convenience wrapper alrededor de QSensor

QTiltSensor

Envoltorio de conveniencia alrededor de QSensor

Clases de filtro

Al igual que con las clases de sensores, estos proporcionan envolturas de conveniencia que reducen la necesidad de casting.

QAccelerometerFilter

Envoltura de conveniencia alrededor de QSensorFilter

QAmbientLightFilter

Envoltura de conveniencia alrededor de QSensorFilter

QAmbientTemperatureFilter

Envoltura de conveniencia alrededor de QSensorFilter

QCompassFilter

Convenience wrapper alrededor de QSensorFilter

QGyroscopeFilter

Convenience wrapper alrededor de QSensorFilter

QHumidityFilter

Convenience wrapper alrededor de QSensorFilter

QLightFilter

Convenience wrapper alrededor de QSensorFilter

QMagnetometerFilter

Convenience wrapper alrededor de QSensorFilter

QOrientationFilter

Convenience wrapper alrededor de QSensorFilter

QPressureFilter

Convenience wrapper alrededor de QSensorFilter

QProximityFilter

Convenience wrapper alrededor de QSensorFilter

QRotationFilter

Convenience wrapper alrededor de QSensorFilter

QTiltFilter

Convenience wrapper alrededor de QSensorFilter

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