QSensor Class
QSensor 类表示一个硬件传感器。更多内容...
| 头文件: | #include <QSensor> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Sensors) target_link_libraries(mytarget PRIVATE Qt6::Sensors) |
| qmake: | QT += sensors |
| 继承自: | QObject |
| 继承自: |
公共类型
| enum | AxesOrientationMode { FixedOrientation, AutomaticOrientation, UserOrientation } |
| enum | Feature { Buffering, AlwaysOn, SkipDuplicates, GeoValues, FieldOfView, …, AxesOrientation } |
属性
|
|
公共函数
| 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 |
公共槽位
信号
| 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) |
静态公共成员
| QByteArray | defaultSensorForType(const QByteArray &type) |
| QList<QByteArray> | sensorTypes() |
| QList<QByteArray> | sensorsForType(const QByteArray &type) |
相关的非成员
详细说明
传感器的生命周期通常如下:
- 在栈或堆上创建 QSensor 的子类。
- 根据应用程序的要求进行初始化。
- 开始接收数值。
- 应用程序使用传感器数据。
- 停止接收数值。
传感器数据通过QSensorReading 及其子类传递。
方向
某些传感器会对屏幕方向的变化作出反应,例如QAccelerometer 、QMagnetometer 和QRotationSensor 。这些被称为可定向传感器。对于可定向传感器,QSensor 支持根据屏幕方向更改读数值的报告方式。
对于可旋转传感器,axesOrientationMode 属性控制方向如何影响读数。
在默认模式(QSensor::FixedOrientation )下,读数值不受屏幕方向影响。在QSensor::AutomaticOrientation 模式下,读数值会根据当前屏幕方向自动旋转。最后,在QSensor::UserOrientation 模式下,读数值将根据用户指定的方向进行旋转。
此功能仅在后端支持且传感器可调整方向时才可用,可通过调用QSensor::isFeatureSupported() 并传入QSensor::AxesOrientation 标志来验证。
此处的方向值始终是指屏幕方向,而非设备方向。 屏幕方向是指 GUI 的方向。例如,当设备逆时针旋转 90 度时,屏幕方向会顺时针旋转 90 度以进行补偿,从而确保设备旋转后 GUI 仍然保持竖直。 请注意,应用程序可以锁定屏幕方向,例如强制设置为纵向或横向模式。对于已锁定的方向,如果设备方向发生变化,可定向传感器不会对读数变化作出反应,因为可定向传感器仅对屏幕方向的变化作出反应。这合乎逻辑,因为可定向传感器的目的是保持传感器方向与屏幕方向同步。
方向值范围为 0 到 270 度。方向值按顺时针方向应用,例如,方向值为 90 度意味着屏幕已从其初始位置向右旋转了 90 度,以补偿设备向左旋转了 90 度的角度。
另请参阅 QSensorReading 。
成员类型文档
enum QSensor::AxesOrientationMode
说明屏幕方向如何影响读数。
| 常量 | 值 | 描述 |
|---|---|---|
QSensor::FixedOrientation | 0 | 不会对读数值应用自动旋转。 |
QSensor::AutomaticOrientation | 1 | 读数值会根据屏幕方向自动旋转。 |
QSensor::UserOrientation | 2 | 读数值会根据userOrientation 属性的角度进行旋转。 |
另请参阅 QSensor::axesOrientationMode 。
enum QSensor::Feature
列出了后端可能支持的可选功能。
所有传感器类型共有的功能包括:
| 常量 | 值 | 描述 |
|---|---|---|
QSensor::Buffering | 0 | 后端支持读数缓冲,由QSensor::bufferSize 属性控制。 |
QSensor::AlwaysOn | 1 | 后端支持更改空闲时是否暂停的策略,该策略由QSensor::alwaysOn 属性控制。 |
QSensor::SkipDuplicates | 5 | 该后端支持跳过相同或非常相似的连续读数。可通过将QSensor::skipDuplicates 属性设置为true来启用此功能。 |
QMagnetometer 的特性包括:
| 常量 | 值 | 描述 |
|---|---|---|
QSensor::GeoValues | 2 | 后端支持返回地理坐标值,可通过QMagnetometer::returnGeoValues 属性进行控制。 |
QLightSensor 的特性如下:
| 常量 | 值 | 描述 |
|---|---|---|
QSensor::FieldOfView | 3 | 后端指定其视场,该值可从QLightSensor::fieldOfView 属性中读取。 |
QAccelerometer 的特性如下:
| 常量 | 值 | 描述 |
|---|---|---|
QSensor::AccelerationMode | 4 | 后端支持通过QAccelerometer::accelerationMode 属性切换加速度计的加速度模式。 |
QPressureSensor 的特性如下:
| 常量 | 值 | 描述 |
|---|---|---|
QSensor::PressureSensorTemperature | 7 | 后端提供压力传感器的芯片温度 |
所有可定向传感器的特性如下:
| 常量 | 值 | 描述 |
|---|---|---|
QSensor::AxesOrientation | 6 | 后端支持将坐标轴方向从默认的QSensor::FixedOrientation 更改为其他方向。 |
另请参阅 QSensor::isFeatureSupported()。
属性文档
active : bool
该属性存储一个值,用于指示传感器是否处于活动状态。
如果传感器处于活动状态(正在返回值),则该值为 true;否则为 false。
请注意,将此值设置为 true 不会立即生效。相反,传感器将在事件循环被触发后才开始工作。
访问函数:
| bool | isActive() const |
| void | setActive(bool active) |
通知器信号:
| void | activeChanged() |
alwaysOn : bool
该属性存储一个值,用于指示在屏幕关闭时传感器是否应继续运行。
某些平台在屏幕关闭时会自动暂停传感器运行。将此属性设置为 true 可确保传感器继续运行。
访问函数:
| bool | isAlwaysOn() const |
| void | setAlwaysOn(bool alwaysOn) |
通知信号:
| void | alwaysOnChanged() |
[read-only] availableDataRates : qrangelist
该属性包含传感器支持的数据速率。
这是一个列出了传感器支持的数据速率的列表。单位为赫兹。
列表中的条目可以表示离散速率或连续的速率范围。若两个值相同,则表示离散速率。
请注意,此信息并非必填项,因为并非所有传感器都有运行速率。在这种情况下,列表将为空。
访问函数:
| qrangelist | availableDataRates() const |
另请参阅 QSensor::dataRate 和qrangelist 。
axesOrientationMode : AxesOrientationMode
该属性用于设置影响屏幕方向变化时读数处理方式的模式。
当设置为FixedOrientation (即默认模式)时,读数不会自动旋转。对于不支持QSensor::AxesOrientation 功能的后端,这是唯一可用的模式。
当设置为AutomaticOrientation 时,屏幕方向发生变化时,读数值会自动旋转。实际上,屏幕方向的变化会被抵消。
例如,假设设备旋转了 180 度,因此屏幕方向也相对于原生方向旋转了 180 度。 如果没有自动轴向调整,读数值现在就会发生变化:X 和 Y 值都会被取反,这迫使应用程序开发人员必须在应用程序代码中手动消除这种取反。自动轴向调整会自动完成此操作,在此模式下,X 和 Y 值将与默认屏幕方向时相同。
这种坐标轴的自动旋转在某些用例中非常方便,例如在通过观察加速度计的 X 轴值来测量表面水平度的水平仪应用程序中。 当设备和屏幕方向发生 90 度变化时,应用程序开发人员无需进行任何更改,即使设备已旋转,他仍可继续使用 X 轴值。如果没有自动坐标轴方向功能,应用程序开发人员则需要改用 Y 轴值,从而需要在应用程序中添加代码,根据屏幕方向从不同的坐标轴读取数据。
UserOrientation 模式与AutomaticOrientation 非常相似,只是屏幕方向由手动控制而非自动确定。此时,会使用userOrientation 属性的角度来旋转读取值。
由于读数值的旋转基于屏幕方向,因此 Z 值永远不会改变,因为 Z 轴与屏幕垂直。随着屏幕方向以 90 度为增量变化,读数值的旋转也是以 90 度为增量进行的。
此属性仅适用于可调整方向的传感器。
访问函数:
| QSensor::AxesOrientationMode | axesOrientationMode() const |
| void | setAxesOrientationMode(QSensor::AxesOrientationMode axesOrientationMode) |
通知信号:
| void | axesOrientationModeChanged(QSensor::AxesOrientationMode axesOrientationMode) |
bufferSize : int
该属性存储缓冲区的大小。默认情况下,缓冲区大小为 1,这意味着不进行缓冲。如果最大缓冲区大小为 1,则该传感器不支持缓冲功能。
将 bufferSize 设置为大于maxBufferSize 将导致使用maxBufferSize 。
当 bufferSize 大于 1 时,缓冲功能将被启用。传感器将收集请求数量的样本,并一次性将它们全部传递给应用程序。这些样本将作为一组变化的读数批量传递给应用程序,因此应用程序必须立即处理每个读数或将值保存到其他位置,这一点尤为重要。
如果在缓冲过程中调用stop(),则未传输的缓冲区数据将不会被发送。
当传感器以启用缓冲选项的方式启动时,数据将从启动那一刻起开始采集。此时不存在可利用的预先存在的缓冲区。
某些后端仅支持启用或禁用缓冲,而不提供对缓冲区大小的控制。在这种情况下,即使支持缓冲,maxBufferSize 和efficientBufferSize 属性也可能完全未被设置。将bufferSize属性设置为大于1的任意值将启用缓冲。 传感器启动后,backend 会将 `bufferSize` 属性设置为实际值。
访问函数:
| int | bufferSize() const |
| void | setBufferSize(int bufferSize) |
通知信号:
| void | bufferSizeChanged(int bufferSize) |
另请参阅 QSensor::maxBufferSize 和QSensor::efficientBufferSize 。
[read-only] busy : bool
该属性存储一个值,用于指示传感器是否处于忙碌状态。
某些传感器可能已存在于系统中,但无法使用。如果传感器处于忙碌状态,此函数将返回 true。此时您将无法对该传感器调用 `start()` 函数。
请注意,如果您正在使用该传感器,此函数不会返回 true;仅当另一个进程正在使用该传感器时才会返回 true。
访问函数:
| bool | isBusy() const |
通知信号:
| void | busyChanged() |
另请参阅 busyChanged()。
[read-only] connectedToBackend : bool
该属性存储一个值,用于指示传感器是否已连接到后端。
尚未连接到后端的传感器无法执行任何有用的操作。
调用connectToBackend()方法可强制传感器立即连接到后端。若调用start(),该方法会自动被调用,因此仅当您需要访问传感器属性时(例如在使用传感器前先轮询其元数据),才需手动执行此操作。
访问函数:
| bool | isConnectedToBackend() const |
[read-only] currentOrientation : int
该属性存储用于旋转读数值的当前方向。
这可能与屏幕方向不同。例如,在“FixedOrientation ”模式下,读数不会被旋转,因此该属性的值为 0。
在“UserOrientation ”模式下,读数会根据userOrientation 属性进行旋转,因此该属性等于userOrientation 属性。
在“AutomaticOrientation ”模式下,读数会根据 属性进行旋转,因此该属性将等于 属性。
该属性由后端设置,且仅对可旋转传感器有效。
访问函数:
| int | currentOrientation() const |
通知信号:
| void | currentOrientationChanged(int currentOrientation) |
dataRate : int
该属性存储传感器应运行的数据速率。
单位为赫兹。
数据速率是指传感器能够检测到变化的最大频率。
设置此属性不具备可移植性,且可能与其他应用程序发生冲突。请查阅传感器后端和平台文档,了解有关多个应用程序请求同一数据速率的任何相关政策。
默认值 (0) 表示应用程序不关心数据速率是多少。应用程序应考虑使用基于计时器的轮询来获取当前值,或者确保处理值的代码能够非常快速地运行,因为平台每秒可能会提供数百次更新。
应在调用start()之前设置此属性,因为传感器在运行过程中可能无法察觉此值的变更。
请注意,平台没有机制可以确定当前使用的数据速率。
访问函数:
| int | dataRate() const |
| void | setDataRate(int rate) |
通知信号:
| void | dataRateChanged() |
另请参阅 QSensor::availableDataRates 。
[read-only] description : QString
该属性存储了传感器的描述性字符串。
访问函数:
| QString | description() const |
[read-only] efficientBufferSize : int
该属性存储最高效的缓冲区大小。通常该值为 1(这意味着没有特定大小是最高效的)。某些传感器驱动程序具有 FIFO 缓冲区,因此一次性传输与 FIFO 大小等量的读数会更高效。
访问函数:
| int | efficientBufferSize() const |
通知信号:
| void | efficientBufferSizeChanged(int efficientBufferSize) |
另请参阅 QSensor::bufferSize 和QSensor::maxBufferSize 。
[read-only] error : int
该属性保存了传感器上设置的最后一个错误代码。
请注意,错误代码因传感器而异。
访问函数:
| int | error() const |
通知信号:
| void | sensorError(int error) |
identifier : QByteArray
该属性存储了传感器的后端标识符。
请注意,当传感器连接到后端时,该标识符会自动填充。若要连接特定的后端,应在调用connectToBackend()之前先调用setIdentifier()。
访问函数:
| QByteArray | identifier() const |
| void | setIdentifier(const QByteArray &identifier) |
通知器信号:
| void | identifierChanged() |
[read-only] maxBufferSize : int
该属性存储最大缓冲区大小。
请注意,该值可能为 1,此时传感器不支持任何形式的缓冲。在这种情况下,isFeatureSupported (QSensor::Buffering )也将返回 false。
访问函数:
| int | maxBufferSize() const |
通知信号:
| void | maxBufferSizeChanged(int maxBufferSize) |
另请参阅 QSensor::bufferSize 和QSensor::efficientBufferSize 。
outputRange : int
该属性存储传感器当前使用的输出范围。
该值表示要使用的QSensor::outputRanges 列表中的索引。
设置此属性不具备可移植性,可能会与其他应用程序发生冲突。请查阅传感器后端和平台文档,了解有关多个应用程序请求输出范围的任何政策。
默认值 (-1) 表示应用程序不关心输出范围是多少。
请注意,目前尚无机制可确定平台当前使用的输出范围。
访问函数:
| int | outputRange() const |
| void | setOutputRange(int index) |
另请参阅 QSensor::outputRanges 。
[read-only] outputRanges : qoutputrangelist
该属性包含传感器支持的输出范围列表。
一个传感器可能具有多个输出量程。通常这样做是为了在牺牲精度的前提下获得更大的测量范围。
请注意,此信息并非必填项。通常只有具有可选输出范围的传感器(例如典型的加速度计)才会提供此信息。
访问函数:
| qoutputrangelist | outputRanges() const |
另请参阅 QSensor::outputRange 和qoutputrangelist 。
[read-only] reading : QSensorReading*
该属性存储读取类。
读取类提供对传感器读数的访问。读取对象是最近接收到的传感器读数的易失性缓存,因此应用程序应立即处理读数,或将值保存到某处以便稍后处理。
请注意,在传感器后端连接到后端之前,该方法将返回 0。
另请注意,在调用start()后,读数并非立即可用。应用程序必须等待readingChanged()信号被触发。
访问函数:
| QSensorReading * | reading() const |
通知器信号:
| void | readingChanged() |
另请参阅 isConnectedToBackend() 和start()。
skipDuplicates : bool
用于指定是否应忽略重复的读数值。
启用重复值跳过功能后,连续且数值相同或非常相近的读数将被跳过。这有助于减少处理量,因为可供处理的传感器读数会减少。因此,读数到达的间隔会变得不规律。
重复值跳过功能不仅针对完全相同的读数,也针对非常相似的读数,因为即使设备未移动,每个传感器也会存在一定的抖动。
此属性的支持情况取决于后端。请使用isFeatureSupported() 检查当前平台是否支持该功能。
默认情况下,重复数据跳过功能处于禁用状态。
重复跳过功能在传感器启动时生效,在传感器活动期间更改该属性不会立即生效。
访问函数:
| bool | skipDuplicates() const |
| void | setSkipDuplicates(bool skipDuplicates) |
通知信号:
| void | skipDuplicatesChanged(bool skipDuplicates) |
[read-only] type : const QByteArray
该属性存储传感器的类型。
访问函数:
| QByteArray | type() const |
userOrientation : int
该属性存储了在“UserOrientation ”模式下用于旋转读数值的旋转角度。
当axesOrientationMode 属性设置为UserOrientation 时,读数值旋转的角度将取自该属性。在其他模式下,该属性无效。
默认值为 0。唯一有效的值是 0、90、180 和 270,因为这些是屏幕可能的唯一方向。
此属性仅对可旋转传感器有效。
访问函数:
| int | userOrientation() const |
| void | setUserOrientation(int userOrientation) |
通知信号:
| void | userOrientationChanged(int userOrientation) |
成员函数文档
[explicit] QSensor::QSensor(const QByteArray &type, QObject *parent = nullptr)
将type 传感器作为parent 的子类进行构建。
如果特定传感器类型已有派生类,请勿使用此构造函数。
错误的做法是使用基类的构造函数:
QSensor *magnetometer = new QSensor(QMagnetometer::sensorType, this);正确的方法是创建派生类的实例:
QMagnetometer *magnetometer = new QMagnetometer(this);派生类具有额外的属性和数据成员,这些是实现某些功能所必需的,例如QMagnetometer 中的地理位置值支持,或QAccelerometer 中的加速度模式支持。只有从 QSensor 子类创建传感器实例时,这些功能才能正常工作。
仅在没有可用的派生传感器类时才使用此构造函数。请注意,所有内置传感器都有派生类,因此仅在实现自定义传感器时才需要使用此构造函数。
[virtual noexcept] QSensor::~QSensor()
销毁传感器。如果传感器尚未停止运行,则将其停止。
[signal] void QSensor::activeChanged()
当QSensor::active 属性发生变化时,会触发此信号。
注意: 这是属性active 的通知器 信号。
另请参阅 QSensor::active 。
void QSensor::addFilter(QSensorFilter *filter)
向传感器添加一个filter 。
传感器不会拥有该过滤器。如果过滤器被销毁,QSensorFilter 会通知传感器。
另请参阅 QSensorFilter 。
[signal] void QSensor::alwaysOnChanged()
当alwaysOn 属性发生变化时,会触发此信号。
注意: 这是属性alwaysOn 的通知器 信号。
[signal] void QSensor::availableSensorsChanged()
当可用传感器列表发生变化时,会发出此信号。虽然程序可用的传感器通常不会随时间变化,但其中一些传感器可能代表并非永久连接的硬件。例如,通过蓝牙连接的游戏手柄在开启时会显示为可用,关闭时则会显示为不可用。
另请参阅 QSensor::sensorTypes() 和QSensor::sensorsForType()。
[signal] void QSensor::busyChanged()
当传感器不再忙于处理任务时,会发出此信号。这可用于在传感器可用时将其占用。
sensor.start();
if (sensor.isBusy()) {
// need to wait for busyChanged signal and try again
}注意: 这是属性busy的通知 信号。
[invokable] bool QSensor::connectToBackend()
尝试连接到传感器后端。
如果能找到合适的后端,则返回 true;否则返回 false。
如果您直接使用QSensor ,则必须在调用此方法之前设置类型。
注意: 可以通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。
另请参阅 isConnectedToBackend()。
[static] QByteArray QSensor::defaultSensorForType(const QByteArray &type)
返回type 的默认传感器标识符。该标识符在配置文件中设定,如有需要可进行覆盖。如果没有默认值,系统将返回type 中注册的第一个传感器。
请注意,存在一种特殊情况逻辑,用于防止当同一类型已注册了其他后端时,通用插件的后端成为默认后端。该逻辑意味着,只有当该类型未注册其他后端,或者在Sensors.conf 中进行了指定时,以generic. 开头的后端标识符才会成为默认后端。
另请参阅 《确定某类型的默认传感器》。
QList<QSensorFilter *> QSensor::filters() const
返回当前附加到传感器上的过滤器。
另请参阅 QSensorFilter 。
[invokable] bool QSensor::isFeatureSupported(QSensor::Feature feature) const
检查后端是否支持某项特定功能。
QtSensors 提供了一套功能丰富的 API,用于控制传感器并提供相关信息。当然,并非所有这些功能都能被所有后端支持。
若要检查当前后端是否支持feature 功能,请调用此函数。
后端必须已建立连接,否则将返回 false。调用connectToBackend() 或start() 将建立与后端的连接。
后端必须实现QSensorBackend::isFeatureSupported() 才能使该功能正常工作。
若后端已连接,则返回该功能是否受支持;若后端未连接,则返回 false。
注意:此 函数可通过元对象系统和 QML 调用。参见Q_INVOKABLE 。
[signal] void QSensor::readingChanged()
当接收到新的传感器读数时,会触发此信号。
传感器读数可通过QSensor::reading 属性获取。请注意,该读数对象是最近接收到的传感器读数的易失性缓存,因此应用程序应立即处理该读数,或将数值保存到某处以便稍后处理。
在该信号首次发出之前,reading 对象中的数据尚未初始化。
注意: 属性reading的通知器 信号。
另请参阅 start()。
void QSensor::removeFilter(QSensorFilter *filter)
从传感器上取下filter 。
另请参阅 QSensorFilter 。
[signal] void QSensor::sensorError(int error)
当传感器上设置了error 代码时,会发出此信号。请注意,某些错误会导致传感器停止工作。您应调用isActive()来确定传感器是否仍在运行。
注意: 这是属性error的通知 信号。
[static] QList<QByteArray> QSensor::sensorTypes()
返回一个包含所有传感器类型的列表。
[static] QList<QByteArray> QSensor::sensorsForType(const QByteArray &type)
返回type 中每个传感器的ID列表。如果该类型的传感器不可用,则列表为空。
void QSensor::setCurrentOrientation(int currentOrientation)
将当前屏幕方向设置为currentOrientation 。每当屏幕方向或userOrientation 属性发生变化时,后端应调用此方法。
另请参阅 currentOrientation()。
void QSensor::setEfficientBufferSize(int efficientBufferSize)
将高效缓冲区大小设置为efficientBufferSize 。此函数应由后端调用。
另请参阅 efficientBufferSize()。
void QSensor::setMaxBufferSize(int maxBufferSize)
将最大缓冲区大小设置为maxBufferSize 。此函数应由后端调用。
另请参阅 maxBufferSize()。
void QSensor::setSkipDuplicates(bool skipDuplicates)
将重复项跳过设置为skipDuplicates 。
注意: 这是属性 `skipDuplicates`的设置 函数。
另请参阅 skipDuplicates()。
[signal] void QSensor::skipDuplicatesChanged(bool skipDuplicates)
当skipDuplicates 属性发生变化时,会触发此信号。
注意: 这是属性 `skipDuplicates`的通知器 信号。
[slot] bool QSensor::start()
开始从传感器读取数值。如果传感器已启动,则返回 true;否则返回 false。
传感器可能因多种原因无法启动。
应用程序启动传感器后,必须等待传感器接收到新值,才能查询传感器的数值。这是由于传感器从系统接收值的方式所致。传感器通常不会主动轮询新值,而是当新值产生时,系统会将其推送至传感器。
例如,以下代码将无法按预期运行。
sensor->start();
sensor->reading()->x(); // no data available要正确运行,访问读数的代码应确保已发出readingChanged()信号。
connect(sensor, SIGNAL(readingChanged()), this, SLOT(checkReading()));
sensor->start();
}
void MyClass::checkReading() {
sensor->reading()->x();另请参阅 QSensor::busy 。
[slot] void QSensor::stop()
停止从传感器读取值。
这将释放传感器,以便其他进程可以使用它。
另请参阅 QSensor::busy 。
相关的非成员
[alias] qoutputrangelist
该类型被定义为一组 qoutputrange 值的列表。
typedef QList<qoutputrange> qoutputrangelist;另请参阅 QList 、qoutputrange 以及QSensor::outputRanges 。
[alias] qrange
该类型被定义为QPair 。
typedef QPair<int,int> qrange;另请参阅 QPair 、qrangelist 和QSensor::availableDataRates 。
[alias] qrangelist
该类型被定义为一组 qrange 值的列表。
typedef QList<qrange> qrangelist;另请参阅 QList 、qrange 以及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.