本页内容

QSensorBackend Class

QSensorBackend 类是一个传感器实现。更多内容...

头文件: #include <QSensorBackend>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sensors)
target_link_libraries(mytarget PRIVATE Qt6::Sensors)
qmake: QT += sensors
继承自: QObject

公共函数

void addDataRate(qreal min, qreal max)
void addOutputRange(qreal min, qreal max, qreal accuracy)
virtual bool isFeatureSupported(QSensor::Feature feature) const
void newReadingAvailable()
QSensorReading *reading() const
QSensor *sensor() const
void sensorBusy(bool busy = true)
void sensorError(int error)
void sensorStopped()
void setDataRates(const QSensor *otherSensor)
void setDescription(const QString &description)
T *setReading(T *reading)
virtual void start() = 0
virtual void stop() = 0

详细说明

设备上的传感器将由 QSensorBackend 的子类表示。

成员函数文档

void QSensorBackend::addDataRate(qreal min, qreal max)

为传感器添加一个数据速率(由min 和max 的值组成)。

请注意,应从构造函数中调用此函数,以便信息能立即生效。

另请参阅 QSensor::availableDataRates 。

void QSensorBackend::addOutputRange(qreal min, qreal max, qreal accuracy)

为该传感器添加一个输出范围(由min 、max 的数值以及accuracy 组成)。

请注意,应从构造函数中调用此函数,以便信息能立即可用。

另请参阅 QSensor::outputRange 和QSensor::outputRanges 。

[virtual] bool QSensorBackend::isFeatureSupported(QSensor::Feature feature) const

检查该传感器后端是否支持某项功能。

这是QSensor::isFeatureSupported() 的后端实现。如果后端支持QSensor::Feature 中列出的任何附加传感器功能,请重写此函数。

返回该后端是否支持feature 功能。默认实现返回 false。

void QSensorBackend::newReadingAvailable()

通知QSensor 类已有新的读取数据可用。

QSensorReading *QSensorBackend::reading() const

如果后端丢失了对读取操作的引用,可以调用此方法来获取其地址。

请注意,您需要将其向下转换为相应的类型。

另请参阅 setReading()。

QSensor *QSensorBackend::sensor() const

返回与该后端关联的传感器前端。

void QSensorBackend::sensorBusy(bool busy = true)

根据提供的busy 参数,将传感器的忙状态通知前端。

如果传感器被设置为忙状态,这将隐式调用sensorStopped()。忙状态的指示通常在start()中完成。

请注意,前端必须调用QSensor::isBusy()来检查传感器是否处于忙碌状态。如果传感器因错误而停止工作,应调用sensorError()函数,以将错误状态通知给类。

void QSensorBackend::sensorError(int error)

通知前端发生传感器故障。请注意,这仅会报告error 故障代码,并不会停止传感器的工作。

另请参阅 sensorStopped()。

void QSensorBackend::sensorStopped()

通知前端传感器已停止工作。这可能是由于start() 调用失败,也可能是由于某些意外原因(例如硬件故障)。

请注意,前端必须调用QSensor::isActive() 来检查传感器是否已停止。如果传感器因错误而停止,应调用sensorError() 函数以通知该类存在错误状况。

void QSensorBackend::setDataRates(const QSensor *otherSensor)

根据otherSensor 设置传感器的数据传输速率。

此功能专为基于其他传感器的传感器设计。

setDataRates(otherSensor);

请注意,必须在构造函数中调用此函数。

另请参阅 QSensor::availableDataRates 和addDataRate()。

void QSensorBackend::setDescription(const QString &description)

为传感器设置description 。

请注意,应从构造函数中调用此函数,以便信息能够立即生效。

template <typename T> T *QSensorBackend::setReading(T *reading)

调用此函数是为了初始化用于某个传感器的reading 类。

如果您的后端已为某个读数分配了内存,则应将该内存地址传递给该函数。否则,应传递 0,该函数将返回一个地址,您的后端在需要向传感器 API 通知新读数时应使用该地址。

请注意,这是一个模板函数,因此应使用相应的类型调用它。

class MyBackend : public QSensorBackend
{
    QAccelerometerReading m_reading;
public:
    MyBackend(QSensor *sensor)
        : QSensorBackend(sensor)
    {
        setReading<QAccelerometerReading>(&m_reading);
    }

    ...

请注意,必须调用此函数,否则将无法向前端发送读数。

如果您不想存储读数的地址,可以使用reading() 方法在稍后再次获取它。

class MyBackend : public QSensorBackend
{
public:
    MyBackend(QSensor *sensor)
        : QSensorBackend(sensor)
    {
        setReading<QAccelerometerReading>(0);
    }

    void poll()
    {
        quint64 timestamp;
        qreal x, y, z;
        ...
        QAccelerometerReading *reading = static_cast<QAccelerometerReading*>(reading());
        reading->setTimestamp(timestamp);
        reading->setX(x);
        reading->setY(y);
        reading->setZ(z);
    }

    ...

另请参阅 reading()。

[pure virtual] void QSensorBackend::start()

开始报告数值。

[pure virtual] void QSensorBackend::stop()

停止报告数值。

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