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.
Representa un único sensor de hardware | |
Eficaz función de devolución de llamada para notificaciones asíncronas de cambios en el sensor | |
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.
Informa de la aceleración lineal a lo largo de los ejes X, Y y Z | |
Representa una lectura del sensor de luz ambiental | |
Representa una lectura de la temperatura ambiente | |
Representa una lectura de la brújula | |
Representa una lectura del sensor giroscópico | |
Representa una lectura del sensor de humedad | |
Representa una lectura del sensor de luz | |
Representa una lectura del magnetómetro | |
Representa una lectura del sensor de orientación | |
Representa una lectura del sensor de presión | |
Representa una lectura del sensor de proximidad | |
Representa una lectura del sensor de rotación | |
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.
Envoltura de conveniencia alrededor de QSensor | |
Envoltura de conveniencia alrededor de QSensor | |
Envoltura de conveniencia alrededor de QSensor | |
Envoltura de conveniencia alrededor de QSensor | |
Convenience wrapper alrededor de QSensor | |
Convenience wrapper alrededor de QSensor | |
Convenience wrapper alrededor de QSensor | |
Convenience wrapper alrededor de QSensor | |
Convenience wrapper alrededor de QSensor | |
Convenience wrapper alrededor de QSensor | |
Convenience wrapper alrededor de QSensor | |
Convenience wrapper alrededor de QSensor | |
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.
Envoltura de conveniencia alrededor de QSensorFilter | |
Envoltura de conveniencia alrededor de QSensorFilter | |
Envoltura de conveniencia alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
Convenience wrapper alrededor de QSensorFilter | |
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.