Auf dieser Seite

QSensor Class

Die Klasse „QSensor“ repräsentiert einen einzelnen Hardware-Sensor. Mehr...

Header: #include <QSensor>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sensors)
target_link_libraries(mytarget PRIVATE Qt6::Sensors)
qmake: QT += sensors
Erbt von: QObject
Vererbt an:
13 Typen

QAccelerometer, „ QAmbientLightSensor “, „ QAmbientTemperatureSensor “, „ QCompass “, „ QGyroscope “, „ QHumiditySensor “, „ QLightSensor “, „ QMagnetometer “, „ QOrientationSensor “, „ QPressureSensor “, „ QProximitySensor “, „ QRotationSensor “ sowie QTiltSensor

Öffentliche Typen

enum AxesOrientationMode { FixedOrientation, AutomaticOrientation, UserOrientation }
enum Feature { Buffering, AlwaysOn, SkipDuplicates, GeoValues, FieldOfView, …, AxesOrientation }

Eigenschaften

Öffentliche Funktionen

QSensor(const QByteArray &type, QObject *parent = nullptr)
virtual ~QSensor()
void addFilter(QSensorFilter *filter)
qrangelist availableDataRates() const
QSensor::AxesOrientationMode axesOrientationMode() const
int bufferSize() const
bool connectToBackend()
int currentOrientation() const
int dataRate() const
QString description() const
int efficientBufferSize() const
int error() const
QList<QSensorFilter *> filters() const
QByteArray identifier() const
bool isActive() const
bool isAlwaysOn() const
bool isBusy() const
bool isConnectedToBackend() const
bool isFeatureSupported(QSensor::Feature feature) const
int maxBufferSize() const
int outputRange() const
qoutputrangelist outputRanges() const
QSensorReading *reading() const
void removeFilter(QSensorFilter *filter)
void setActive(bool active)
void setAlwaysOn(bool alwaysOn)
void setAxesOrientationMode(QSensor::AxesOrientationMode axesOrientationMode)
void setBufferSize(int bufferSize)
void setCurrentOrientation(int currentOrientation)
void setDataRate(int rate)
void setEfficientBufferSize(int efficientBufferSize)
void setIdentifier(const QByteArray &identifier)
void setMaxBufferSize(int maxBufferSize)
void setOutputRange(int index)
void setSkipDuplicates(bool skipDuplicates)
void setUserOrientation(int userOrientation)
bool skipDuplicates() const
QByteArray type() const
int userOrientation() const

Öffentliche Slots

bool start()
void stop()

Signale

void activeChanged()
void alwaysOnChanged()
void availableSensorsChanged()
void axesOrientationModeChanged(QSensor::AxesOrientationMode axesOrientationMode)
void bufferSizeChanged(int bufferSize)
void busyChanged()
void currentOrientationChanged(int currentOrientation)
void dataRateChanged()
void efficientBufferSizeChanged(int efficientBufferSize)
void identifierChanged()
void maxBufferSizeChanged(int maxBufferSize)
void readingChanged()
void sensorError(int error)
void skipDuplicatesChanged(bool skipDuplicates)
void userOrientationChanged(int userOrientation)

Statische öffentliche Mitglieder

QByteArray defaultSensorForType(const QByteArray &type)
QList<QByteArray> sensorTypes()
QList<QByteArray> sensorsForType(const QByteArray &type)

Detaillierte Beschreibung

Der Lebenszyklus eines Sensors verläuft typischerweise wie folgt:

  • Erstellen Sie eine Unterklasse von QSensor auf dem Stack oder dem Heap.
  • Konfigurieren Sie den Sensor entsprechend den Anforderungen der Anwendung.
  • Beginn des Empfangs von Werten.
  • Die Sensordaten werden von der Anwendung verwendet.
  • Beenden Sie den Empfang von Werten.

Die Sensordaten werden über ` QSensorReading ` und dessen Unterklassen bereitgestellt.

Ausrichtung

Einige Sensoren reagieren auf Änderungen der Bildschirmausrichtung, wie beispielsweise „ QAccelerometer “, „ QMagnetometer “ und „ QRotationSensor “. Dies sind sogenannte ausrichtbare Sensoren. Für ausrichtbare Sensoren unterstützt QSensor die Anpassung der gemeldeten Messwerte an die Ausrichtung des Bildschirms.

Bei ausrichtbaren Sensoren steuert die Eigenschaft „ axesOrientationMode “, wie sich die Ausrichtung auf die Messwerte auswirkt.

Im Standardmodus „ QSensor::FixedOrientation “ bleiben die Messwerte von der Ausrichtung unbeeinflusst. Im Modus „ QSensor::AutomaticOrientation “ werden die Messwerte automatisch unter Berücksichtigung der aktuellen Bildschirmausrichtung gedreht. Und schließlich werden im Modus „ QSensor::UserOrientation “ die Messwerte entsprechend einer vom Benutzer festgelegten Ausrichtung gedreht.

Diese Funktionalität ist nur verfügbar, wenn sie vom Backend unterstützt wird und der Sensor ausrichtbar ist. Dies lässt sich durch den Aufruf von ` QSensor::isFeatureSupported()` mit dem Flag ` QSensor::AxesOrientation ` überprüfen.

Die Ausrichtungswerte beziehen sich hier immer auf die Bildschirmausrichtung, nicht auf die Geräteausrichtung. Die Bildschirmausrichtung ist die Ausrichtung der Benutzeroberfläche. Wird ein Gerät beispielsweise um 90 Grad gegen den Uhrzeigersinn gedreht, gleicht die Bildschirmausrichtung dies durch eine Drehung um 90 Grad im Uhrzeigersinn aus, sodass die Benutzeroberfläche nach der Drehung des Geräts weiterhin aufrecht ausgerichtet ist. Beachten Sie, dass Anwendungen die Bildschirmausrichtung sperren können, um beispielsweise den Hoch- oder Querformatmodus zu erzwingen. Bei gesperrten Ausrichtungen reagieren ausrichtbare Sensoren nicht mit Messwertänderungen, wenn die Geräteausrichtung geändert wird, da ausrichtbare Sensoren ausschließlich auf Änderungen der Bildschirmausrichtung reagieren. Dies ist sinnvoll, da der Zweck ausrichtbarer Sensoren darin besteht, die Sensorausrichtung mit der Bildschirmausrichtung synchron zu halten.

Die Ausrichtungswerte reichen von 0 bis 270 Grad. Die Ausrichtung erfolgt im Uhrzeigersinn, d. h. ein Ausrichtungswert von 90 Grad bedeutet, dass der Bildschirm um 90 Grad nach rechts von seiner Ausgangsposition gedreht wurde, um eine Gerätedrehung um 90 Grad nach links auszugleichen.

Siehe auch QSensorReading.

Dokumentation zum Mitgliedstyp

enum QSensor::AxesOrientationMode

Beschreibt, wie die Messwerte von der Bildschirmausrichtung beeinflusst werden.

KonstanteWertBeschreibung
QSensor::FixedOrientation0Die Messwerte werden nicht automatisch gedreht.
QSensor::AutomaticOrientation1Die Messwerte werden automatisch entsprechend der Bildschirmausrichtung gedreht.
QSensor::UserOrientation2Die Messwerte werden entsprechend dem Winkel der Eigenschaft „ userOrientation “ gedreht.

Siehe auch „ QSensor::axesOrientationMode “.

enum QSensor::Feature

Listet optionale Funktionen auf, die ein Backend möglicherweise unterstützt.

Die folgenden Funktionen sind allen Sensortypen gemeinsam:

KonstanteWertBeschreibung
QSensor::Buffering0Das Backend unterstützt die Pufferung von Messwerten, gesteuert durch die Eigenschaft „ QSensor::bufferSize “.
QSensor::AlwaysOn1Das Backend unterstützt die Änderung der Richtlinie, ob bei Inaktivität der Betrieb angehalten werden soll; dies wird über die Eigenschaft „ QSensor::alwaysOn “ gesteuert.
QSensor::SkipDuplicates5Das Backend unterstützt das Überspringen aufeinanderfolgender Messwerte, die identisch oder sehr ähnlich sind. Dies kann aktiviert werden, indem die Eigenschaft „ QSensor::skipDuplicates “ auf „true“ gesetzt wird.

Die Funktionen von „ QMagnetometer “ sind:

KonstantWertBeschreibung
QSensor::GeoValues2Das Backend unterstützt die Rückgabe von Geo-Werten, die über die Eigenschaft „ QMagnetometer::returnGeoValues “ gesteuert werden können.

Die Funktionen von „ QLightSensor “ sind:

KonstanteWertBeschreibung
QSensor::FieldOfView3Das Backend legt sein Sichtfeld fest, das über die Eigenschaft „ QLightSensor::fieldOfView “ abgelesen werden kann.

Die Eigenschaften von „ QAccelerometer “ sind:

KonstanteWertBeschreibung
QSensor::AccelerationMode4Das Backend unterstützt das Umschalten des Beschleunigungsmodus des Beschleunigungssensors über die Eigenschaft „ QAccelerometer::accelerationMode “.

Die Funktionen von „ QPressureSensor “ sind:

KonstanteWertBeschreibung
QSensor::PressureSensorTemperature7Das Backend liefert die Chip-Temperatur des Drucksensors

Die Funktionen aller ausrichtbaren Sensoren sind:

KonstanteWertBeschreibung
QSensor::AxesOrientation6Das Backend unterstützt die Änderung der Achsenausrichtung von der Standardeinstellung „ QSensor::FixedOrientation “ auf eine andere.

Siehe auch ` QSensor::isFeatureSupported()`.

Dokumentation zur Eigenschaft

active : bool

Diese Eigenschaft enthält einen Wert, der angibt, ob der Sensor aktiv ist.

Dieser Wert ist „true“, wenn der Sensor aktiv ist (Werte zurückgibt). Andernfalls ist er „false“.

Beachten Sie, dass die Einstellung dieses Werts auf „true“ keine sofortige Wirkung hat. Stattdessen wird der Sensor gestartet, sobald die Ereignisschleife erreicht ist.

Zugriffsfunktionen:

bool isActive() const
void setActive(bool active)

Notifier-Signal:

void activeChanged()

alwaysOn : bool

Diese Eigenschaft enthält einen Wert, der angibt, ob der Sensor auch bei ausgeschaltetem Bildschirm weiterlaufen soll.

Auf einigen Plattformen werden Sensoren standardmäßig angehalten, wenn der Bildschirm ausgeschaltet wird. Wenn Sie diese Eigenschaft auf „true“ setzen, wird sichergestellt, dass der Sensor weiterhin läuft.

Zugriffsfunktionen:

bool isAlwaysOn() const
void setAlwaysOn(bool alwaysOn)

Benachrichtigungssignal:

[read-only] availableDataRates : qrangelist

Diese Eigenschaft enthält die Datenraten, die der Sensor unterstützt.

Dies ist eine Liste der vom Sensor unterstützten Datenraten. Gemessen in Hertz.

Einträge in der Liste können diskrete Raten oder einen kontinuierlichen Ratenbereich darstellen. Eine diskrete Rate wird dadurch gekennzeichnet, dass beide Werte identisch sind.

Beachten Sie, dass diese Angabe nicht obligatorisch ist, da nicht alle Sensoren mit einer bestimmten Rate arbeiten. In solchen Fällen ist die Liste leer.

Zugriffsfunktionen:

qrangelist availableDataRates() const

Siehe auch QSensor::dataRate und qrangelist.

axesOrientationMode : AxesOrientationMode

Diese Eigenschaft legt den Modus fest, der bestimmt, wie sich die Bildschirmausrichtung auf die angezeigten Werte auswirkt.

Bei der Einstellung „ FixedOrientation “ (Standardmodus) wird keine automatische Drehung auf die Messwerte angewendet. Dies ist der einzige verfügbare Modus für Backends, die die Funktion „ QSensor::AxesOrientation “ nicht unterstützen.

Bei der Einstellung „ AutomaticOrientation “ werden die Messwerte automatisch gedreht, wenn sich die Bildschirmausrichtung ändert. Im Endeffekt wird die Bildschirmausrichtung aufgehoben.

Nehmen wir als Beispiel an, das Gerät wird um 180 Grad gedreht, wodurch sich auch die Bildschirmausrichtung um 180 Grad gegenüber der nativen Ausrichtung dreht. Ohne automatische Achsenausrichtung würden sich die Messwerte nun ändern: Sowohl die X- als auch die Y-Werte würden negiert, was einen Anwendungsentwickler dazu zwingen würde, die Negation im Anwendungscode manuell aufzuheben. Die automatische Achsenausrichtung erledigt dies automatisch; in diesem Modus wären die X- und Y-Werte dieselben wie bei der Standard-Bildschirmausrichtung.

Diese automatische Drehung der Achsen ist in einigen Anwendungsfällen praktisch, zum Beispiel in einer Wasserwaagen-Anwendung, die anhand des X-Achsenwerts eines Beschleunigungssensors misst, wie eben eine Oberfläche ist. Wenn sich die Geräte- und Bildschirmausrichtung um 90 Grad ändert, muss der Anwendungsentwickler nichts ändern; er kann den X-Achsenwert weiterhin verwenden, obwohl das Gerät gedreht wurde. Ohne automatische Achsenausrichtung müsste der Anwendungsentwickler stattdessen die Y-Werte heranziehen und somit Code zur Anwendung hinzufügen, der je nach Bildschirmausrichtung von einer anderen Achse ausliest.

Der Modus „ UserOrientation “ ähnelt dem Modus „ AutomaticOrientation “ sehr, nur dass die Bildschirmausrichtung manuell gesteuert statt automatisch bestimmt wird. Der Winkel der Eigenschaft „ userOrientation “ wird dann zum Drehen der Messwerte verwendet.

Da die Drehung der Messwerte auf der Bildschirmausrichtung basiert, ändern sich die Z-Werte niemals, da die Z-Achse senkrecht zum Bildschirm steht. Da sich die Bildschirmausrichtung in 90-Grad-Schritten ändert, erfolgt die Drehung der Messwerte ebenfalls in 90-Grad-Schritten.

Diese Eigenschaft wird nur bei drehbaren Sensoren verwendet.

Zugriffsfunktionen:

QSensor::AxesOrientationMode axesOrientationMode() const
void setAxesOrientationMode(QSensor::AxesOrientationMode axesOrientationMode)

Benachrichtigungssignal:

void axesOrientationModeChanged(QSensor::AxesOrientationMode axesOrientationMode)

bufferSize : int

Diese Eigenschaft gibt die Größe des Puffers an. Standardmäßig beträgt die Puffergröße 1, was bedeutet, dass keine Pufferung stattfindet. Wenn die maximale Puffergröße 1 beträgt, wird die Pufferung vom Sensor nicht unterstützt.

Wird „bufferSize“ auf einen Wert größer als „ maxBufferSize “ gesetzt, wird „ maxBufferSize “ verwendet.

Die Pufferung ist aktiviert, wenn „bufferSize“ größer als 1 ist. Der Sensor sammelt die angeforderte Anzahl von Messwerten und übermittelt sie alle auf einmal an die Anwendung. Sie werden der Anwendung als Burst geänderter Messwerte übermittelt, daher ist es besonders wichtig, dass die Anwendung jeden Messwert sofort verarbeitet oder die Werte an anderer Stelle speichert.

Wird „ stop()“ aufgerufen, während die Pufferung läuft, wird der teilweise gefüllte Puffer nicht übergeben.

Wird der Sensor mit der Pufferungsoption gestartet, werden die Werte ab diesem Zeitpunkt erfasst. Es gibt keinen bereits vorhandenen Puffer, der genutzt werden kann.

Einige Backends unterstützen lediglich das Aktivieren oder Deaktivieren des Puffers und bieten keine Kontrolle über dessen Größe. In diesem Fall sind die Eigenschaften ` maxBufferSize ` und ` efficientBufferSize ` möglicherweise gar nicht festgelegt, obwohl die Pufferung unterstützt wird. Durch Setzen der Eigenschaft `bufferSize` auf einen beliebigen Wert größer als 1 wird die Pufferung aktiviert. Nach dem Start des Sensors wird die Eigenschaft „bufferSize“ vom Backend auf den tatsächlichen Wert gesetzt.

Zugriffsfunktionen:

int bufferSize() const
void setBufferSize(int bufferSize)

Benachrichtigungssignal:

void bufferSizeChanged(int bufferSize)

Siehe auch „ QSensor::maxBufferSize “ und „ QSensor::efficientBufferSize “.

[read-only] busy : bool

Diese Eigenschaft enthält einen Wert, der angibt, ob der Sensor beschäftigt ist.

Manche Sensoren sind zwar im System vorhanden, stehen jedoch nicht zur Nutzung zur Verfügung. Diese Funktion gibt „true“ zurück, wenn der Sensor belegt ist. Sie können den Sensor in diesem Fall nicht mit „ start()“ abrufen.

Beachten Sie, dass diese Funktion nicht „true“ zurückgibt, wenn Sie den Sensor gerade nutzen, sondern nur, wenn ein anderer Prozess den Sensor nutzt.

Zugriffsfunktionen:

bool isBusy() const

Benachrichtigungssignal:

void busyChanged()

Siehe auch ` busyChanged()`.

[read-only] connectedToBackend : bool

Diese Eigenschaft enthält einen Wert, der angibt, ob der Sensor eine Verbindung zu einem Backend hergestellt hat.

Ein Sensor, der nicht mit einem Backend verbunden ist, kann keine nützlichen Funktionen ausführen.

Rufen Sie die Methode ` connectToBackend()` auf, um den Sensor zu zwingen, sofort eine Verbindung zu einem Backend herzustellen. Diese Methode wird automatisch aufgerufen, wenn Sie ` start()` aufrufen; Sie müssen dies also nur tun, wenn Sie Zugriff auf Sensoreigenschaften benötigen (z. B. um die Metadaten des Sensors abzufragen, bevor Sie ihn verwenden).

Zugriffsfunktionen:

bool isConnectedToBackend() const

[read-only] currentOrientation : int

Diese Eigenschaft enthält die aktuelle Ausrichtung, die zum Drehen der Messwerte verwendet wird.

Diese entspricht möglicherweise nicht der Bildschirmausrichtung. Im Modus „ FixedOrientation “ werden die Messwerte beispielsweise nicht gedreht, weshalb die Eigenschaft den Wert 0 annimmt.

Im Modus „ UserOrientation “ werden die Messwerte basierend auf der Eigenschaft „ userOrientation “ gedreht, weshalb diese Eigenschaft der Eigenschaft „ userOrientation “ entspricht.

Im Modus „ AutomaticOrientation “ werden die Messwerte entsprechend der Bildschirmausrichtung gedreht, weshalb diese Eigenschaft der aktuellen Bildschirmausrichtung entspricht.

Diese Eigenschaft wird vom Backend festgelegt und gilt nur für ausrichtbare Sensoren.

Zugriffsfunktionen:

int currentOrientation() const

Benachrichtigungssignal:

void currentOrientationChanged(int currentOrientation)

dataRate : int

Diese Eigenschaft gibt die Datenrate an, mit der der Sensor betrieben werden soll.

Gemessen in Hertz.

Die Datenrate ist die maximale Frequenz, mit der der Sensor Änderungen erfassen kann.

Die Einstellung dieser Eigenschaft ist nicht plattformübergreifend und kann zu Konflikten mit anderen Anwendungen führen. Informieren Sie sich in der Dokumentation zum Sensor-Backend und zur Plattform über etwaige Richtlinien bezüglich mehrerer Anwendungen, die eine Datenrate anfordern.

Der Standardwert (0) bedeutet, dass es für die App unerheblich ist, wie hoch die Datenrate ist. Anwendungen sollten in Erwägung ziehen, den aktuellen Wert zeitgesteuert abzufragen, oder sicherstellen, dass der Code zur Verarbeitung der Werte sehr schnell ausgeführt werden kann, da die Plattform möglicherweise Hunderte von Aktualisierungen pro Sekunde bereitstellt.

Dies sollte vor dem Aufruf von ` start()` festgelegt werden, da der Sensor Änderungen an diesem Wert möglicherweise nicht bemerkt, während er läuft.

Beachten Sie, dass es keinen Mechanismus gibt, um die aktuell von der Plattform verwendete Datenrate zu ermitteln.

Zugriffsfunktionen:

int dataRate() const
void setDataRate(int rate)

Benachrichtigungssignal:

void dataRateChanged()

Siehe auch ` QSensor::availableDataRates`.

[read-only] description : QString

Diese Eigenschaft enthält eine beschreibende Zeichenfolge für den Sensor.

Zugriffsfunktionen:

QString description() const

[read-only] efficientBufferSize : int

Die Eigenschaft enthält die effizienteste Puffergröße. Normalerweise ist dieser Wert 1 (was bedeutet, dass keine bestimmte Größe am effizientesten ist). Einige Sensortreiber verfügen über einen FIFO-Puffer, wodurch es effizienter ist, Messwerte im Umfang der FIFO-Größe auf einmal zu übermitteln.

Zugriffsfunktionen:

int efficientBufferSize() const

Benachrichtigungssignal:

void efficientBufferSizeChanged(int efficientBufferSize)

Siehe auch QSensor::bufferSize und QSensor::maxBufferSize.

[read-only] error : int

Diese Eigenschaft enthält den zuletzt am Sensor gesetzten Fehlercode.

Beachten Sie, dass Fehlercodes sensorspezifisch sind.

Zugriffsfunktionen:

int error() const

Benachrichtigungssignal:

void sensorError(int error)

identifier : QByteArray

Diese Eigenschaft enthält die Backend-Kennung des Sensors.

Beachten Sie, dass die Kennung automatisch ausgefüllt wird, sobald der Sensor mit einem Backend verbunden ist. Wenn Sie eine Verbindung zu einem bestimmten Backend herstellen möchten, sollten Sie setIdentifier() vor connectToBackend() aufrufen.

Zugriffsfunktionen:

QByteArray identifier() const
void setIdentifier(const QByteArray &identifier)

Notifier-Signal:

void identifierChanged()

[read-only] maxBufferSize : int

Die Eigenschaft gibt die maximale Puffergröße an.

Beachten Sie, dass dieser Wert 1 sein kann; in diesem Fall unterstützt der Sensor keinerlei Pufferung. In diesem Fall gibt „ isFeatureSupported “ (QSensor::Buffering) ebenfalls „false“ zurück.

Zugriffsfunktionen:

int maxBufferSize() const

Benachrichtigungssignal:

void maxBufferSizeChanged(int maxBufferSize)

Siehe auch „ QSensor::bufferSize “ und „ QSensor::efficientBufferSize “.

outputRange : int

Diese Eigenschaft enthält den vom Sensor verwendeten Ausgabebereich.

Dieser Wert gibt den Index in der Liste „ QSensor::outputRanges “ an, der verwendet werden soll.

Die Einstellung dieser Eigenschaft ist nicht portabel und kann zu Konflikten mit anderen Anwendungen führen. Informieren Sie sich in der Dokumentation zum Sensor-Backend und zur Plattform über etwaige Richtlinien bezüglich mehrerer Anwendungen, die einen Ausgabebereich anfordern.

Der Standardwert (-1) bedeutet, dass es für die App unerheblich ist, welcher Ausgabebereich verwendet wird.

Beachten Sie, dass es keinen Mechanismus gibt, um den aktuell von der Plattform verwendeten Ausgabebereich zu ermitteln.

Zugriffsfunktionen:

int outputRange() const
void setOutputRange(int index)

Siehe auch „ QSensor::outputRanges “.

[read-only] outputRanges : qoutputrangelist

Diese Eigenschaft enthält eine Liste der vom Sensor unterstützten Messbereiche.

Ein Sensor kann über mehr als einen Ausgangsbereich verfügen. In der Regel wird dies getan, um einen größeren Messbereich zu erzielen, wobei jedoch die Genauigkeit beeinträchtigt wird.

Beachten Sie, dass diese Angabe nicht zwingend erforderlich ist. Diese Information ist in der Regel nur für Sensoren verfügbar, die über wählbare Ausgangsbereiche verfügen (wie beispielsweise typische Beschleunigungssensoren).

Zugriffsfunktionen:

qoutputrangelist outputRanges() const

Siehe auch QSensor::outputRange und qoutputrangelist.

[read-only] reading : QSensorReading*

Diese Eigenschaft enthält die Leseklasse.

Die Leseklasse ermöglicht den Zugriff auf Sensorwerte. Das Leseobjekt ist ein flüchtiger Cache des zuletzt empfangenen Sensorwerts. Daher sollte die Anwendung die Werte sofort verarbeiten oder sie zur späteren Verarbeitung an einem Ort speichern.

Beachten Sie, dass hier 0 zurückgegeben wird, bis ein Sensor-Backend mit einem Backend verbunden ist.

Beachten Sie außerdem, dass die Messwerte nach dem Aufruf von ` start()` nicht sofort verfügbar sind. Anwendungen müssen warten, bis das Signal ` readingChanged()` ausgegeben wird.

Zugriffsfunktionen:

QSensorReading *reading() const

Notifier-Signal:

Siehe auch ` isConnectedToBackend()` und ` start()`.

skipDuplicates : bool

Gibt an, ob doppelte Messwerte ausgelassen werden sollen.

Wenn das Überspringen von Duplikaten aktiviert ist, werden aufeinanderfolgende Messwerte mit identischen oder sehr ähnlichen Werten ausgelassen. Dies trägt dazu bei, den Verarbeitungsaufwand zu reduzieren, da weniger Sensorwerte zur Verfügung stehen. Infolgedessen treffen die Messwerte in unregelmäßigen Abständen ein.

Das Überspringen von Duplikaten wird nicht nur für Messwerte aktiviert, die exakt identisch sind, sondern auch für solche, die einander sehr ähnlich sind, da jeder Sensor eine gewisse Schwankung aufweist, selbst wenn das Gerät nicht bewegt wird.

Die Unterstützung dieser Eigenschaft hängt vom Backend ab. Verwenden Sie ` isFeatureSupported()``, um zu prüfen, ob sie auf der aktuellen Plattform unterstützt wird.

Das Überspringen von Duplikaten ist standardmäßig deaktiviert.

Das Überspringen von Duplikaten wird beim Start des Sensors wirksam; eine Änderung der Eigenschaft bei aktivem Sensor hat keine unmittelbare Wirkung.

Zugriffsfunktionen:

bool skipDuplicates() const
void setSkipDuplicates(bool skipDuplicates)

Benachrichtigungssignal:

void skipDuplicatesChanged(bool skipDuplicates)

[read-only] type : const QByteArray

Diese Eigenschaft enthält den Typ des Sensors.

Zugriffsfunktionen:

QByteArray type() const

userOrientation : int

Diese Eigenschaft enthält den Winkel, der im Modus „ UserOrientation “ zur Drehung der Messwerte verwendet wird.

Wenn die Eigenschaft „ axesOrientationMode “ auf „ UserOrientation “ gesetzt ist, wird der Winkel für die Drehung der Anzeigewerte aus dieser Eigenschaft übernommen. In anderen Modi hat die Eigenschaft keine Auswirkung.

Der Standardwert ist 0. Die einzigen gültigen Werte sind 0, 90, 180 und 270, da dies die einzigen möglichen Bildschirmausrichtungen sind.

Diese Eigenschaft gilt nur für ausrichtbare Sensoren.

Zugriffsfunktionen:

int userOrientation() const
void setUserOrientation(int userOrientation)

Benachrichtigungssignal:

void userOrientationChanged(int userOrientation)

Dokumentation der Mitgliedsfunktionen

[explicit] QSensor::QSensor(const QByteArray &type, QObject *parent = nullptr)

Erstellen Sie den Sensor „ type “ als untergeordneten Sensor von „ parent “.

Verwenden Sie diesen Konstruktor nicht, wenn für den jeweiligen Sensortyp eine abgeleitete Klasse existiert.

Falsch ist es, den Konstruktor der Basisklasse zu verwenden:

QSensor *magnetometer = new QSensor(QMagnetometer::sensorType, this);

Die richtige Vorgehensweise besteht darin, eine Instanz der abgeleiteten Klasse zu erstellen:

QMagnetometer *magnetometer = new QMagnetometer(this);

Die abgeleiteten Klassen verfügen über zusätzliche Eigenschaften und Datenelemente, die für bestimmte Funktionen erforderlich sind, wie z. B. die Unterstützung von Geo-Werten in ` QMagnetometer ` oder die Unterstützung des Beschleunigungsmodus in ` QAccelerometer`. Diese Funktionen funktionieren nur dann ordnungsgemäß, wenn eine Sensorinstanz aus einer Unterklasse von `QSensor` erstellt wird.

Verwenden Sie diesen Konstruktor nur, wenn keine abgeleitete Sensorklasse verfügbar ist. Beachten Sie, dass alle integrierten Sensoren eine abgeleitete Klasse haben, sodass die Verwendung dieses Konstruktors nur bei der Implementierung benutzerdefinierter Sensoren erforderlich sein sollte.

[virtual noexcept] QSensor::~QSensor()

Den Sensor zerstören. Stoppt den Sensor, falls er noch nicht gestoppt wurde.

[signal] void QSensor::activeChanged()

Dieses Signal wird ausgelöst, wenn sich die Eigenschaft „ QSensor::active “ geändert hat.

Hinweis: Notifier -Signal für die Eigenschaft „ active “.

Siehe auch „ QSensor::active “.

void QSensor::addFilter(QSensorFilter *filter)

Fügen Sie dem Sensor einen „ filter “ hinzu.

Der Sensor übernimmt nicht die Verantwortung für den Filter. „ QSensorFilter “ informiert den Sensor, falls dieser zerstört wird.

Siehe auch „ QSensorFilter “.

[signal] void QSensor::alwaysOnChanged()

Dieses Signal wird ausgelöst, wenn sich die Eigenschaft „ alwaysOn “ ändert.

Hinweis: Notifier -Signal für die Eigenschaft „ alwaysOn “.

[signal] void QSensor::availableSensorsChanged()

Dieses Signal wird ausgegeben, wenn sich die Liste der verfügbaren Sensoren geändert hat. Die für ein Programm verfügbaren Sensoren ändern sich im Allgemeinen nicht im Laufe der Zeit; jedoch können einige der verfügbaren Sensoren Hardware darstellen, die nicht dauerhaft angeschlossen ist. Beispielsweise würde ein über Bluetooth angeschlossener Gamecontroller verfügbar sein, wenn er eingeschaltet ist, und nicht mehr verfügbar sein, wenn er ausgeschaltet ist.

Siehe auch QSensor::sensorTypes() und QSensor::sensorsForType().

[signal] void QSensor::busyChanged()

Dieses Signal wird ausgegeben, wenn der Sensor nicht mehr belegt ist. Dies kann genutzt werden, um einen Sensor zu belegen, sobald er verfügbar wird.

sensor.start();
if (sensor.isBusy()) {
    // need to wait for busyChanged signal and try again
}

Hinweis: Benachrichtigungssignal für die Eigenschaft „ busy “.

[invokable] bool QSensor::connectToBackend()

Versucht, eine Verbindung zu einem Sensor-Backend herzustellen.

Gibt „true“ zurück, wenn ein passendes Backend gefunden wurde, andernfalls „false“.

Der Typ muss vor dem Aufruf dieser Methode festgelegt werden, wenn Sie „ QSensor “ direkt verwenden.

Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML aufgerufen werden. Siehe Q_INVOKABLE.

Siehe auch „ isConnectedToBackend()“.

[static] QByteArray QSensor::defaultSensorForType(const QByteArray &type)

Gibt die Standard-Sensor-ID für „ type “ zurück. Diese wird in einer Konfigurationsdatei festgelegt und kann bei Bedarf überschrieben werden. Ist kein Standardwert verfügbar, gibt das System den ersten registrierten Sensor für „ type “ zurück.

Beachten Sie, dass es eine spezielle Logik gibt, die verhindert, dass die Backends des generischen Plugins zum Standard werden, wenn ein anderes Backend für denselben Typ registriert ist. Diese Logik bedeutet, dass eine Backend-Kennung, die mit generic. beginnt, nur dann als Standard gilt, wenn für diesen Typ keine anderen Backends registriert wurden oder wenn sie in Sensors.conf angegeben ist.

Siehe auch „Festlegen des Standardsensors für einen Typ“.

QList<QSensorFilter *> QSensor::filters() const

Gibt die Filter zurück, die derzeit dem Sensor zugeordnet sind.

Siehe auch „ QSensorFilter “.

[invokable] bool QSensor::isFeatureSupported(QSensor::Feature feature) const

Prüft, ob eine bestimmte Funktion vom Backend unterstützt wird.

QtSensors bietet eine umfangreiche API zur Steuerung von Sensoren und zur Bereitstellung von Informationen über diese. Natürlich können nicht alle diese Funktionen von allen Backends unterstützt werden.

Um zu prüfen, ob das aktuelle Backend die Funktion „ feature “ unterstützt, rufen Sie diese Funktion auf.

Das Backend muss verbunden sein, andernfalls wird „false“ zurückgegeben. Durch den Aufruf von ` connectToBackend()` oder ` start()` wird eine Verbindung zum Backend hergestellt.

Backends müssen ` QSensorBackend::isFeatureSupported()` implementieren, damit dies funktioniert.

Gibt zurück, ob die Funktion unterstützt wird, wenn das Backend verbunden ist, oder „false“, wenn das Backend nicht verbunden ist.

Hinweis: Diese Funktion kann über das Metaobjekt-System und aus QML aufgerufen werden. Siehe Q_INVOKABLE.

[signal] void QSensor::readingChanged()

Dieses Signal wird ausgegeben, wenn ein neuer Sensorwert empfangen wird.

Der Sensorwert ist in der Eigenschaft „ QSensor::reading “ zu finden. Beachten Sie, dass es sich bei dem Messwert-Objekt um einen flüchtigen Zwischenspeicher des zuletzt empfangenen Sensorwerts handelt; daher sollte die Anwendung den Wert sofort verarbeiten oder die Werte zur späteren Verarbeitung an einem Ort speichern.

Bevor dieses Signal zum ersten Mal ausgelöst wird, enthält das Messwert-Objekt noch nicht initialisierte Daten.

Hinweis: Notifier -Signal für die Eigenschaft „ reading “.

Siehe auch ` start()`.

void QSensor::removeFilter(QSensorFilter *filter)

Entfernen Sie „ filter “ vom Sensor.

Siehe auch „ QSensorFilter “.

[signal] void QSensor::sensorError(int error)

Dieses Signal wird ausgegeben, wenn am Sensor ein Code „ error “ gesetzt ist. Beachten Sie, dass manche Fehler dazu führen, dass der Sensor nicht mehr funktioniert. Sie sollten die Funktion ` isActive()` aufrufen, um festzustellen, ob der Sensor noch läuft.

Hinweis: Notifier -Signal für die Eigenschaft „ error “.

[static] QList<QByteArray> QSensor::sensorTypes()

Gibt eine Liste aller Sensortypen zurück.

[static] QList<QByteArray> QSensor::sensorsForType(const QByteArray &type)

Gibt eine Liste mit den IDs aller Sensoren für „ type “ zurück. Sind keine Sensoren dieses Typs verfügbar, ist die Liste leer.

void QSensor::setCurrentOrientation(int currentOrientation)

Setzt die aktuelle Bildschirmausrichtung auf „ currentOrientation “. Diese Funktion soll vom Backend aufgerufen werden, sobald sich die Bildschirmausrichtung oder die Eigenschaft „ userOrientation “ ändert.

Siehe auch ` currentOrientation()`.

void QSensor::setEfficientBufferSize(int efficientBufferSize)

Legt die effiziente Puffergröße auf „ efficientBufferSize “ fest. Diese Funktion muss vom Backend aufgerufen werden.

Siehe auch ` efficientBufferSize()`.

void QSensor::setMaxBufferSize(int maxBufferSize)

Legt die maximale Puffergröße auf „ maxBufferSize “ fest. Diese Funktion muss vom Backend aufgerufen werden.

Siehe auch maxBufferSize().

void QSensor::setSkipDuplicates(bool skipDuplicates)

Legt das Überspringen von Duplikaten auf „ skipDuplicates “ fest.

Hinweis: Setter -Funktion für die Eigenschaft „ skipDuplicates “.

Siehe auch „ skipDuplicates()“.

[signal] void QSensor::skipDuplicatesChanged(bool skipDuplicates)

Dieses Signal wird ausgelöst, wenn sich die Eigenschaft „ skipDuplicates “ ändert.

Hinweis: Notifier -Signal für die Eigenschaft „ skipDuplicates “.

[slot] bool QSensor::start()

Beginnt mit dem Abrufen von Werten vom Sensor. Gibt „true“ zurück, wenn der Sensor gestartet wurde, andernfalls „false“.

Der Start des Sensors kann aus verschiedenen Gründen fehlschlagen.

Sobald eine Anwendung einen Sensor gestartet hat, muss sie warten, bis der Sensor einen neuen Wert empfängt, bevor sie die Werte des Sensors abfragen kann. Dies liegt an der Art und Weise, wie der Sensor Werte vom System empfängt. Sensoren fragen (im Allgemeinen) nicht nach neuen Werten ab, sondern neue Werte werden den Sensoren in Echtzeit übermittelt, sobald sie anfallen.

Dieser Code funktioniert beispielsweise nicht wie beabsichtigt.

sensor->start();
sensor->reading()->x(); // no data available

Damit der Code, der auf den Messwert zugreift, korrekt funktioniert, muss sichergestellt werden, dass das Signal „ readingChanged()“ ausgesendet wurde.

    connect(sensor, SIGNAL(readingChanged()), this, SLOT(checkReading()));
    sensor->start();
}
void MyClass::checkReading() {
    sensor->reading()->x();

Siehe auch „ QSensor::busy “.

[slot] void QSensor::stop()

Beenden Sie das Abrufen von Werten vom Sensor.

Dadurch wird der Sensor freigegeben, sodass andere Prozesse ihn nutzen können.

Siehe auch QSensor::busy.

Verwandte Nicht-Mitglieder

[alias] qoutputrangelist

Dieser Typ ist als Liste von „qoutputrange“-Werten definiert.

typedef QList<qoutputrange> qoutputrangelist;

Siehe auch QList, qoutputrange und QSensor::outputRanges.

[alias] qrange

Dieser Typ ist als „ QPair “ definiert.

typedef QPair<int,int> qrange;

Siehe auch „ QPair “, „ qrangelist “ und „ QSensor::availableDataRates “.

[alias] qrangelist

Dieser Typ ist als Liste von qrange-Werten definiert.

typedef QList<qrange> qrangelist;

Siehe auch QList, qrange und QSensor::availableDataRates.

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