QGeoSatelliteInfoSource 类

QGeoSatelliteInfoSource 类是一个用于分发卫星信息更新的抽象基类。更多...

头文件 #include <QGeoSatelliteInfoSource>
CMakefind_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmakeQT += positioning
继承自 QObject
继承

QNmeaSatelliteInfoSource

公共类型

枚举Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError }

属性

公共函数

virtual~QGeoSatelliteInfoSource()
(since 6.2) virtual QVariantbackendProperty(const QString &name) const
QBindable<int>bindableUpdateInterval()
virtual QGeoSatelliteInfoSource::Errorerror() const = 0
virtual intminimumUpdateInterval() const = 0
(since 6.2) virtual boolsetBackendProperty(const QString &name, const QVariant &value)
virtual voidsetUpdateInterval(int msec)
QStringsourceName() const
intupdateInterval() const

公共槽

virtual voidrequestUpdate(int timeout = 0) = 0
virtual voidstartUpdates() = 0
virtual voidstopUpdates() = 0

信号

voiderrorOccurred(QGeoSatelliteInfoSource::Error satelliteError)
voidsatellitesInUseUpdated(const QList<QGeoSatelliteInfo> &satellites)
voidsatellitesInViewUpdated(const QList<QGeoSatelliteInfo> &satellites)

静态公共成员

QStringListavailableSources()
QGeoSatelliteInfoSource *createDefaultSource(QObject *parent)
(since Qt 5.14) QGeoSatelliteInfoSource *createDefaultSource(const QVariantMap &parameters, QObject *parent)
QGeoSatelliteInfoSource *createSource(const QString &sourceName, QObject *parent)
(since Qt 5.14) QGeoSatelliteInfoSource *createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

详细描述

静态函数QGeoSatelliteInfoSource::createDefaultSource()用于创建适用于平台的默认卫星数据源,如果可用。否则,将检查可用的QGeoPositionInfoSourceFactory插件,看是否有可用的卫星数据源。

调用startUpdates()和stopUpdates()以启动和停止定期更新,或调用requestUpdate()以请求单次更新。当有更新可用时,将发出satellitesInViewUpdated()和/或satellitesInUseUpdated()。

如果需要定期卫星更新,可以使用setUpdateInterval()指定这些更新应该发出的频率。如果不指定间隔,则只需在更新可用时提供更新。例如

// Emit updates every 10 seconds if available
QGeoSatelliteInfoSource *source = QGeoSatelliteInfoSource::createDefaultSource(0);
if (source)
    source->setUpdateInterval(10000);

要移除以前设置的更新间隔,请使用值为0的setUpdateInterval()。

注意:卫星源可能对更新间隔有最小值要求,这由minimumUpdateInterval()返回。

注意:要从Android服务中使用此类,请参阅Qt在Android中的定位

成员类型文档

枚举QGeoSatelliteInfoSource::Error

错误枚举表示可能发生的错误。

常量描述
QGeoSatelliteInfoSource::AccessError0由于应用程序缺少必需的权限,设置与卫星后端建立连接失败。
QGeoSatelliteInfoSource::ClosedError1卫星后端关闭了连接,例如当用户关闭位置服务时。此对象变得无效,应该被删除。稍后可以通过调用createDefaultSource()创建新的卫星源。
QGeoSatelliteInfoSource::NoError2未发生错误。
QGeoSatelliteInfoSource::UnknownSourceError-1发生了不可识别的错误。
QGeoSatelliteInfoSource::UpdateTimeoutError3在指定的超时时间内无法检索当前的卫星信息。

属性文档

[read-only] minimumUpdateInterval : const int

这个属性包含检索卫星更新所需的最小时间(以毫秒为单位)。

这是由setUpdateInterval()和requestUpdate()接受的最低值。

访问函数

virtual intminimumUpdateInterval() const = 0

[bindable] updateInterval : int

注意:此属性支持QProperty绑定。

此属性包含每个更新之间请求的间隔(以毫秒为单位)。

如果未设置更新间隔(或设置为0),则源将根据需要提供更新。

如果设置了更新间隔,源将尽可能地以请求间隔提供更新。如果请求间隔小于最小更新间隔(),则使用最小间隔。

更新间隔的改变将尽可能快地发生,但是不同的实现中改变所需的时间可能不同。是否将前一个间隔经过的时间计为新的间隔的一部分也取决于实现。

此属性的默认值为0。

注意:子类实现必须调用基类的setUpdateInterval()函数,以确保updateInterval()返回正确的值。

成员函数文档

[虚函数 noexcept] QGeoSatelliteInfoSource::~QGeoSatelliteInfoSource()

销毁卫星源。

[静态] QStringList QGeoSatelliteInfoSource::availableSources()

返回可用源插件的列表,包括如果有的话默认系统后端。

[虚函数, 自6.2版本起] QVariant QGeoSatelliteInfoSource::backendProperty(const QString &name) const

如果有,返回名为name的特定于后端属性值;否则返回的值无效。

此函数自Qt 6.2版本起被引入。

另请参阅setBackendProperty

[静态] QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createDefaultSource(QObject *parent)

创建并返回一个具有指定parent的源,该源从系统默认的卫星更新信息源读取,或读取最高优先级的可用插件。

如果没有默认的卫星源,找不到有效的插件或用户没有权限访问卫星数据,则返回nullptr

[静态,自Qt 5.14版本起] QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createDefaultSource(const QVariantMap &parameters, QObject *parent)

创建并返回一个具有给定parent且从系统默认的卫星数据源读取,或读取具有最高可用优先级的插件的卫星源。

如果没有默认的卫星源,找不到有效的插件或用户没有权限访问卫星信息,则返回nullptr

此方法将parameters传递到工厂以配置源。

此函数自Qt 5.14版本起被引入。

[静态] QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createSource(const QString &sourceName, QObject *parent)

通过加载名为sourceName的插件创建并返回指定parent的源。

如果找不到插件,则返回nullptr

[静态,从 Qt 5.14 以来] QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

通过加载名为 sourceName 的插件,创建并返回一个具有给定 parent 的卫星源。

如果找不到插件,则返回nullptr

此方法将parameters传递到工厂以配置源。

此函数自Qt 5.14版本起被引入。

[纯虚函数] QGeoSatelliteInfoSource::Error QGeoSatelliteInfoSource::error() const

返回最后发生的错误。

注意:从 Qt6 开始,在调用 startUpdates() 或 requestUpdate() 时,总是重置最后错误。

[信号] void QGeoSatelliteInfoSource::errorOccurred(QGeoSatelliteInfoSource::Error satelliteError)

错误发生时会发出此信号。参数 satelliteError 描述了发生错误的类型。

[纯虚槽] void QGeoSatelliteInfoSource::requestUpdate(int timeout = 0)

尝试获取当前的卫星信息并发出带有该信息的 satellitesInViewUpdated() 和 satellitesInUseUpdated() 信号。如果在给定的 timeout (以毫秒为单位)内找不到当前卫星信息,或者如果在 timeout 小于 minimumUpdateInterval() 返回的值时,将发出带有 UpdateTimeoutErrorerrorOccurred() 信号。

如果超时为零,则超时默认为适合源的可接受超时时间段。

如果有其他更新请求正在进行,则此操作不执行任何操作。但是,即使已经调用 startUpdates() 并且正在执行常规更新,也可以调用此方法。

注意:从 Qt6 开始,在请求卫星信息之前,此方法总是将最后错误重置为 NoError

注意:要了解如何从 Android 服务中使用此方法,请参阅 Android 上的 Qt 位置

[信号] void QGeoSatelliteInfoSource::satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &satellites)

当调用 startUpdates() 或 requestUpdate() 时,如果在当前正在使用的卫星数量上有更新的情况,则发出此信号。

这些是用于获取“固定”的卫星——即用于确定当前位置的卫星。

参数 satellites 包含当前正在使用的卫星。

[信号] void QGeoSatelliteInfoSource::satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &satellites)

当调用 startUpdates() 或 requestUpdate() 时,如果在当前视野中的卫星上有更新的情况,则发出此信号。

卫星参数包含 currently in view 中当前可见的卫星。

[虚拟,自6.2起] bool QGeoSatelliteInfoSource::setBackendProperty(const QString &name, const QVariant &value)

将名为 name 的后端特定属性设置为 value。成功时返回 true,否则返回 false。后端特定属性可以用于在运行时配置卫星信息子系统行为。

此函数自Qt 6.2版本起被引入。

另请参阅backendProperty

QString QGeoSatelliteInfoSource::sourceName() const

返回正在使用的卫星源实现的唯一名称。

此名称可以传递给 createSource() 以创建特定卫星源实现的实例。

[纯虚函数] void QGeoSatelliteInfoSource::startUpdates()

以固定间隔开始发出更新。只要可用,就会提供新的卫星信息。

如果无法检索卫星信息或已发生超时等其他形式,则可能发出带有空参数列表的 satellitesInViewUpdated() 和 satellitesInUseUpdated() 信号。

注意:自 Qt6 以来,此方法总是在启动更新前将 最后的错误重置为 NoError

注意:要了解如何从 Android 服务中使用此方法,请参阅 Android 上的 Qt 位置

另请参阅satellitesInViewUpdated() 和 satellitesInUseUpdated

[纯虚函数] void QGeoSatelliteInfoSource::stopUpdates()

停止以固定间隔发出更新。

© 2024 The Qt Company Ltd. 本文档中的贡献是各自所有者的版权。所提供的文档是根据自由软件基金会发布的GNU自由文档许可第1.3版许可的。Qt和相应的标志是The Qt Company Ltd.在芬兰和其他国家的商标。所有其他商标均为其各自所有者的财产。