QGeoPositionInfoSource Class
La clase QGeoPositionInfoSource es una clase base abstracta para la distribución de actualizaciones posicionales. Más...
| Cabecera: | #include <QGeoPositionInfoSource> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning)target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
| qmake: | QT += positioning |
| Hereda: | QObject |
| Heredado por: |
Tipos públicos
| enum | Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError } |
| enum | PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods } |
| flags | PositioningMethods |
Propiedades
- minimumUpdateInterval : int
- preferredPositioningMethods : PositioningMethods
- sourceName : QString
- updateInterval : int
Funciones públicas
| QGeoPositionInfoSource(QObject *parent) | |
| virtual | ~QGeoPositionInfoSource() |
(since Qt 5.14) virtual QVariant | backendProperty(const QString &name) const |
| QBindable<QGeoPositionInfoSource::PositioningMethods> | bindablePreferredPositioningMethods() |
| QBindable<int> | bindableUpdateInterval() |
| virtual QGeoPositionInfoSource::Error | error() const = 0 |
| virtual QGeoPositionInfo | lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0 |
| virtual int | minimumUpdateInterval() const = 0 |
| QGeoPositionInfoSource::PositioningMethods | preferredPositioningMethods() const |
(since Qt 5.14) virtual bool | setBackendProperty(const QString &name, const QVariant &value) |
| virtual void | setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods) |
| virtual void | setUpdateInterval(int msec) |
| QString | sourceName() const |
| virtual QGeoPositionInfoSource::PositioningMethods | supportedPositioningMethods() const = 0 |
| int | updateInterval() const |
Ranuras públicas
| virtual void | requestUpdate(int timeout = 0) = 0 |
| virtual void | startUpdates() = 0 |
| virtual void | stopUpdates() = 0 |
Señales
| void | errorOccurred(QGeoPositionInfoSource::Error positioningError) |
| void | positionUpdated(const QGeoPositionInfo &update) |
(since Qt 5.12) void | supportedPositioningMethodsChanged() |
Miembros públicos estáticos
| QStringList | availableSources() |
| QGeoPositionInfoSource * | createDefaultSource(QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createDefaultSource(const QVariantMap ¶meters, QObject *parent) |
| QGeoPositionInfoSource * | createSource(const QString &sourceName, QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent) |
Descripción detallada
La función estática QGeoPositionInfoSource::createDefaultSource() crea una fuente de posición por defecto que es apropiada para la plataforma, si hay una disponible. En caso contrario, QGeoPositionInfoSource buscará plugins disponibles que implementen la interfaz QGeoPositionInfoSourceFactory.
Los usuarios de una subclase de QGeoPositionInfoSource pueden solicitar la posición actual utilizando requestUpdate(), o iniciar y detener actualizaciones periódicas de posición utilizando startUpdates() y stopUpdates(). Cuando hay una actualización disponible, se emite positionUpdated(). Se puede acceder a la última posición conocida con lastKnownPosition().
Si se requieren actualizaciones periódicas de la posición, puede utilizarse setUpdateInterval() para especificar la frecuencia con la que deben emitirse estas actualizaciones. Si no se especifica ningún intervalo, las actualizaciones se proporcionan simplemente siempre que estén disponibles. Por ejemplo:
// Emit updates every 10 seconds if available QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0); if (source) source->setUpdateInterval(10000);
Para eliminar un intervalo de actualización previamente establecido, llame a setUpdateInterval() con un valor de 0.
Nota: La fuente de posición puede tener un requisito de valor mínimo para los intervalos de actualización, tal y como devuelve minimumUpdateInterval().
Nota: Para utilizar esta clase desde el servicio Android, consulte Qt Positioning en Android.
Documentación de tipos de miembros
enum QGeoPositionInfoSource::Error
La enumeración Error representa los errores que pueden producirse.
| Constante | Valor | Descripción |
|---|---|---|
QGeoPositionInfoSource::AccessError | 0 | La configuración de la conexión con el backend de posicionamiento remoto falló porque la aplicación carecía de los privilegios necesarios. |
QGeoPositionInfoSource::ClosedError | 1 | El backend de posicionamiento remoto cerró la conexión, lo que ocurre por ejemplo en caso de que el usuario desactive los servicios de localización. En cuanto se vuelva a activar el servicio de localización, se reanudarán las actualizaciones periódicas. |
QGeoPositionInfoSource::NoError | 3 | No se ha producido ningún error. |
QGeoPositionInfoSource::UnknownSourceError | 2 | Se ha producido un error no identificado. |
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2) | 4 | Si se ha llamado a requestUpdate(), este error indica que no se ha podido recuperar la posición actual en el tiempo de espera especificado. Si se llamó a startUpdates(), este error indica que esta subclase QGeoPositionInfoSource determinó que no podrá proporcionar más actualizaciones regulares. En este último caso, el error no se volvería a emitir hasta después de que se reanuden las actualizaciones regulares. |
enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods
Define los tipos de métodos de posicionamiento.
| Constante | Valor | Descripción |
|---|---|---|
QGeoPositionInfoSource::NoPositioningMethods | 0x00000000 | Ninguno de los métodos de posicionamiento. |
QGeoPositionInfoSource::SatellitePositioningMethods | 0x000000ff | Métodos de posicionamiento basados en satélite como GPS o GLONASS. |
QGeoPositionInfoSource::NonSatellitePositioningMethods | 0xffffff00 | Otros métodos de posicionamiento como el identificador de célula 3GPP o el posicionamiento basado en WiFi. |
QGeoPositionInfoSource::AllPositioningMethods | 0xffffffff | Métodos de posicionamiento basados en satélites en cuanto estén disponibles. En caso contrario, métodos no basados en satélites. |
El tipo PositioningMethods es un typedef para QFlags<PositioningMethod>. Almacena una combinación OR de valores PositioningMethod.
Documentación de propiedades
[read-only] minimumUpdateInterval : int
Esta propiedad contiene el tiempo mínimo (en milisegundos) necesario para recuperar una actualización de posición.
Este es el valor mínimo aceptado por setUpdateInterval() y requestUpdate().
Funciones de acceso:
| virtual int | minimumUpdateInterval() const = 0 |
[bindable] preferredPositioningMethods : PositioningMethods
Nota: Esta propiedad admite los enlaces QProperty.
Establece los métodos de posicionamiento preferidos para esta fuente.
Si los nuevos métodos incluyen un método no soportado por la fuente, el método no soportado será ignorado.
Si los nuevos métodos no incluyen ningún método disponible/soportado por la fuente, los métodos preferidos se establecerán en el conjunto de métodos que la fuente tenga disponibles. Si la fuente no tiene ningún método disponible (por ejemplo, porque su servicio de localización está desactivado o no ofrece un servicio de localización), los métodos pasados se aceptarán tal cual.
El valor por defecto de esta propiedad es NoPositioningMethods.
Nota: Las implementaciones de subclases deben llamar a la implementación base de setPreferredPositioningMethods() para asegurarse de que preferredPositioningMethods() devuelve el valor correcto.
Funciones de acceso:
| QGeoPositionInfoSource::PositioningMethods | preferredPositioningMethods() const |
| virtual void | setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods) |
Véase también supportedPositioningMethods().
[read-only] sourceName : QString
Esta propiedad contiene el nombre único de la implementación de la fuente de posición en uso.
Es el mismo nombre que se puede pasar a createSource() para crear una nueva instancia de una implementación de fuente de posición concreta.
Funciones de acceso:
| QString | sourceName() const |
[bindable] updateInterval : int
Nota: Esta propiedad soporta enlaces QProperty.
Esta propiedad contiene el intervalo solicitado en milisegundos entre cada actualización.
Si no se establece el intervalo de actualización (o se establece en 0), la fuente proporcionará actualizaciones tan a menudo como sea necesario.
Si se establece el intervalo de actualización, la fuente proporcionará actualizaciones a un intervalo lo más cercano posible al intervalo solicitado. Si el intervalo solicitado es inferior a minimumUpdateInterval(), se utilizará en su lugar el intervalo mínimo.
Los cambios en el intervalo de actualización se producirán tan pronto como sea práctico, aunque el tiempo que tarde el cambio puede variar entre implementaciones. El hecho de que el tiempo transcurrido desde el intervalo anterior se cuente o no como parte del nuevo intervalo también depende de la implementación.
El valor por defecto de esta propiedad es 0.
Nota: Las implementaciones de subclases deben llamar a la implementación base de setUpdateInterval() para que updateInterval() devuelva el valor correcto.
Nota: Esta propiedad no puede utilizarse para ajustar la frecuencia de actualización en iOS y macOS, ya que sus API no ofrecen tal posibilidad. En estos sistemas este parámetro sólo se utiliza para establecer UpdateTimeoutError y activar una señal errorOccurred si la actualización no se recibe en el intervalo deseado.
Funciones de acceso:
| int | updateInterval() const |
| virtual void | setUpdateInterval(int msec) |
Documentación de funciones miembro
[explicit] QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)
Crea una fuente de posición con la dirección parent especificada.
[virtual noexcept] QGeoPositionInfoSource::~QGeoPositionInfoSource()
Destruye la fuente de posición.
[static] QStringList QGeoPositionInfoSource::availableSources()
Devuelve una lista de los plugins de origen disponibles. Esto incluye cualquier plugin backend por defecto para la plataforma actual.
[virtual, since Qt 5.14] QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const
Devuelve el valor de la propiedad específica del backend llamada name, si está presente. En caso contrario, el valor devuelto no será válido. Las propiedades específicas de backend soportadas se listan y describen en Qt Positioning plugins#Default plugins.
Esta función se introdujo en Qt 5.14.
Véase también setBackendProperty.
[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)
Crea y devuelve una fuente de posición con el parent dado que lee de las fuentes de datos de posición por defecto del sistema, o del plugin con la mayor prioridad disponible.
Devuelve nullptr si el sistema no tiene ninguna fuente de posición por defecto, no se han podido encontrar plugins válidos o el usuario no tiene permiso para acceder a la posición actual.
[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap ¶meters, QObject *parent)
Crea y devuelve una fuente de posición con el parent dado que lee de las fuentes de datos de posición por defecto del sistema, o del plugin con la mayor prioridad disponible.
Devuelve nullptr si el sistema no tiene una fuente de posición por defecto, no se han podido encontrar plugins válidos o el usuario no tiene permiso para acceder a la posición actual.
Este método pasa parameters a la fábrica para configurar la fuente.
Esta función se introdujo en Qt 5.14.
[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)
Crea y devuelve una fuente de posición con el nombre parent, cargando el plugin sourceName.
Devuelve nullptr si el plugin no puede ser encontrado.
[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent)
Crea y devuelve una fuente de posición con el nombre parent, cargando el plugin sourceName.
Devuelve nullptr si el plugin no puede ser encontrado.
Este método pasa parameters a la fábrica para configurar la fuente.
Esta función se introdujo en Qt 5.14.
[pure virtual] QGeoPositionInfoSource::Error QGeoPositionInfoSource::error() const
Devuelve el tipo de error que se produjo por última vez.
Nota: Desde Qt6 el último error siempre se reinicia al llamar a startUpdates() o requestUpdate().
[signal] void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)
Esta señal se emite tras producirse un error. El parámetro positioningError describe el tipo de error que se ha producido.
[pure virtual] QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const
Devuelve una actualización que contiene la última posición conocida, o una actualización nula si no hay ninguna disponible.
Si fromSatellitePositioningMethodsOnly es verdadero, devuelve la última posición conocida recibida de un método de posicionamiento por satélite; si no hay ninguno disponible, se devuelve una actualización nula.
[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)
Si se llama a startUpdates() o requestUpdate(), esta señal se emite cuando hay una actualización disponible.
El valor update contiene el valor de la nueva actualización.
[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = 0)
Intenta obtener la posición actual y emite positionUpdated() con esta información. Si no se puede encontrar la posición actual dentro del tiempo dado timeout (en milisegundos) o si timeout es menor que el valor devuelto por minimumUpdateInterval(), se emite una señal errorOccurred() con el UpdateTimeoutError.
Si el tiempo de espera es cero, el tiempo de espera se establece por defecto en un periodo de tiempo razonable apropiado para la fuente.
Esto no hace nada si hay otra solicitud de actualización en curso. Sin embargo, puede llamarse incluso si ya se ha llamado a startUpdates() y hay actualizaciones regulares en curso.
Si la fuente utiliza múltiples métodos de posicionamiento, intenta obtener la posición actual del método de posicionamiento más preciso dentro del tiempo de espera dado.
Nota: Desde Qt6 este método siempre reinicia el último error a NoError antes de solicitar la posición.
Nota: Para saber cómo utilizar este método desde un servicio Android, consulte Qt Positioning en Android.
[virtual, since Qt 5.14] bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)
Establece la propiedad específica del backend name en value. Devuelve true en caso de éxito, false en caso contrario. Las propiedades específicas de backend se pueden utilizar para configurar el comportamiento del subsistema de posicionamiento en tiempo de ejecución. Las propiedades específicas de backend soportadas se listan y describen en Qt Positioning plugins#Default plugins.
Esta función se introdujo en Qt 5.14.
Véase también backendProperty.
[pure virtual slot] void QGeoPositionInfoSource::startUpdates()
Comienza a emitir actualizaciones a intervalos regulares especificados por setUpdateInterval().
Si no se ha llamado a setUpdateInterval(), la fuente emitirá actualizaciones en cuanto estén disponibles.
Se emitirá una señal errorOccurred() con el UpdateTimeoutError si esta subclase QGeoPositionInfoSource determina que no podrá proporcionar actualizaciones regulares. Esto puede ocurrir si se pierde la posición de un satélite o si se detecta un error de hardware. Las actualizaciones de posición se reanudarán si los datos vuelven a estar disponibles más adelante. El error UpdateTimeoutError no volverá a emitirse hasta que se reanuden las actualizaciones periódicas.
Nota: Desde Qt6 este método siempre reinicia el último error a NoError antes de comenzar las actualizaciones.
Nota: Para saber cómo utilizar este método desde un servicio Android, consulte Qt Positioning en Android.
En iOS, a partir de la versión 8, Core Location framework requiere entradas adicionales en el Info.plist de la aplicación con las claves NSLocationAlwaysUsageDescription o NSLocationWhenInUseUsageDescription y una cadena que se mostrará en el prompt de autorización. La clave NSLocationWhenInUseUsageDescription se utiliza cuando se solicita permiso para utilizar los servicios de localización mientras la aplicación está en primer plano. La clave NSLocationAlwaysUsageDescription se utiliza cuando se solicita permiso para utilizar los servicios de localización siempre que la aplicación esté en ejecución (tanto en primer plano como en segundo plano). Si se definen ambas entradas, NSLocationWhenInUseUsageDescription tiene prioridad en el modo en primer plano.
[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()
Deja de emitir actualizaciones a intervalos regulares.
[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const
Devuelve los métodos de posicionamiento disponibles para esta fuente. La disponibilidad se define como utilizable en el momento de llamar a esta función. Por lo tanto, los ajustes del usuario, como el servicio de localización desactivado o las limitaciones a los proveedores de posición por satélite, se reflejan en esta función. Las notificaciones en tiempo de ejecución cuando cambia el estado pueden obtenerse a través de supportedPositioningMethodsChanged().
No todas las plataformas distinguen los diferentes métodos de posicionamiento o comunican la configuración de usuario actual del dispositivo. La siguiente tabla ofrece una visión general de la situación actual de las plataformas:
| Plataforma | Breve descripción |
|---|---|
| Android | El estado individual del proveedor y el estado general del servicio de localización se conocen y comunican cuando el servicio de localización está activo. |
| GeoClue | Predeterminado para devolver siempre AllPositioningMethods. |
| GeoClue2 | No se distinguen los proveedores individuales, pero se reflejan los servicios de localización desactivados. |
| iOS | Predeterminado para devolver siempre AllPositioningMethods. |
| macOS | Predeterminado para devolver siempre AllPositioningMethods. |
| Windows (UWP) | No se distinguen los proveedores individuales, pero se reflejan los servicios de localización desactivados. |
Véase también supportedPositioningMethodsChanged() y setPreferredPositioningMethods().
[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()
Esta señal se emite cuando cambian los métodos de localización admitidos. La causa de un cambio puede ser que un usuario active o desactive los servicios de localización o restrinja los servicios de localización a determinados tipos (por ejemplo, sólo GPS). Tenga en cuenta que los cambios en los métodos de posicionamiento admitidos no pueden detectarse en todas las plataformas. supportedPositioningMethods() proporciona una visión general del soporte actual de la plataforma.
Esta función se introdujo en Qt 5.12.
© 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.