QGeoAreaMonitorSource Class
La clase QGeoAreaMonitorSource permite la detección de cambios de proximidad para un conjunto especificado de coordenadas. Más...
| Cabecera: | #include <QGeoAreaMonitorSource> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning)target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
| qmake: | QT += positioning |
| Hereda: | QObject |
Tipos públicos
| enum | AreaMonitorFeature { PersistentAreaMonitorFeature, AnyAreaMonitorFeature } |
| flags | AreaMonitorFeatures |
| enum | Error { AccessError, InsufficientPositionInfo, NoError, UnknownSourceError } |
Funciones públicas
| QGeoAreaMonitorSource(QObject *parent) | |
| virtual | ~QGeoAreaMonitorSource() |
| virtual QList<QGeoAreaMonitorInfo> | activeMonitors() const = 0 |
| virtual QList<QGeoAreaMonitorInfo> | activeMonitors(const QGeoShape &lookupArea) const = 0 |
(since 6.2) virtual QVariant | backendProperty(const QString &name) const |
| virtual QGeoAreaMonitorSource::Error | error() const = 0 |
| virtual QGeoPositionInfoSource * | positionInfoSource() const |
| virtual bool | requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0 |
(since 6.2) virtual bool | setBackendProperty(const QString &name, const QVariant &value) |
| virtual void | setPositionInfoSource(QGeoPositionInfoSource *newSource) |
| QString | sourceName() const |
| virtual bool | startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0 |
| virtual bool | stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0 |
| virtual QGeoAreaMonitorSource::AreaMonitorFeatures | supportedAreaMonitorFeatures() const = 0 |
Señales
| void | areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update) |
| void | areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update) |
| void | errorOccurred(QGeoAreaMonitorSource::Error areaMonitoringError) |
| void | monitorExpired(const QGeoAreaMonitorInfo &monitor) |
Miembros públicos estáticos
| QStringList | availableSources() |
| QGeoAreaMonitorSource * | createDefaultSource(QObject *parent) |
| QGeoAreaMonitorSource * | createSource(const QString &sourceName, QObject *parent) |
Descripción detallada
Un QGeoAreaMonitorSource emite señales cuando la posición actual está dentro del rango, o se ha movido fuera del rango, de un área especificada. Cada área se especifica mediante un objeto QGeoAreaMonitorInfo. Por ejemplo:
public: MyClass() : QObject() { QGeoAreaMonitorSource*monitor = QGeoAreaMonitorSource::createDefaultSource(this); if(monitor) { connect(monitor, SIGNAL(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo)), this, SLOT(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo))); connect(monitor, SIGNAL(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo)), this, SLOT(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo))); QGeoAreaMonitorInfo bigBen("Big Ben"); QGeoCoordinate position(51.50104, -0.124632); bigBen.setArea(QGeoCircle(posición, 100)); monitor->startMonitoring(bigBen); } else { qDebug() << "Could not create default area monitor"; } }public Q_SLOTS: void areaEntered(const QGeoAreaMonitorInfo &mon, const QGeoPositionInfo &actualización) { Q_UNUSED(mon); qDebug() << "Now within 100 meters, current position is" << update.coordinate(); } void areaExited(const QGeoAreaMonitorInfo &mon, const QGeoPositionInfo &actualización) { Q_UNUSED(mon); qDebug() << "No longer within 100 meters, current position is" << update.coordinate(); }
QGeoAreaMonitorSource sigue un patrón singleton. Cada instancia de la clase con el mismo sourceName() comparte el mismo backend de monitorización de área. Si se añade un nuevo objeto QGeoAreaMonitorInfo a través de startMonitoring() o requestUpdate(), puede ser recuperado por otra instancia de esta clase (siempre que procedan del mismo plugin de proveedor de monitorización de áreas). El mismo patrón singleton se aplica a la instancia QGeoPositionInfoSource utilizada por esta clase. El siguiente fragmento de código destaca este comportamiento:
QGeoAreaMonitorSource *s1 = QGeoAreaMonitorSource::createSource("blah", this); QGeoAreaMonitorSource *s2 = QGeoAreaMonitorSource::createSource("blah", this); QVERIFY(s1->positionInfoSource() == s2->positionInfoSource);
Documentación del tipo de miembro
enum QGeoAreaMonitorSource::AreaMonitorFeature
flags QGeoAreaMonitorSource::AreaMonitorFeatures
Define los tipos de capacidades de monitorización de área.
| Constante | Valor | Descripción |
|---|---|---|
QGeoAreaMonitorSource::PersistentAreaMonitorFeature | 0x00000001 | QGeoAreaMonitorInfo Las instancias pueden hacerse persistentes. Un monitor persistente continúa activo incluso cuando la aplicación que gestiona el monitor no se está ejecutando. |
QGeoAreaMonitorSource::AnyAreaMonitorFeature | 0xffffffff | Coincide con todas las posibles características de monitorización de área. |
El tipo AreaMonitorFeatures es un typedef para QFlags<AreaMonitorFeature>. Almacena una combinación OR de valores AreaMonitorFeature.
enum QGeoAreaMonitorSource::Error
Define los tipos de métodos de posicionamiento.
La enumeración Error representa los errores que pueden producirse.
| Constante | Valor | Descripción |
|---|---|---|
QGeoAreaMonitorSource::AccessError | 0 | La configuración de la conexión al backend remoto de supervisión de área falló porque la aplicación carecía de los privilegios necesarios. |
QGeoAreaMonitorSource::InsufficientPositionInfo | 1 | La fuente de supervisión de área no ha podido recuperar una posición fija o la precisión de la posición fija no es lo suficientemente alta como para proporcionar una supervisión de área eficaz. |
QGeoAreaMonitorSource::NoError | 3 | No se ha producido ningún error. |
QGeoAreaMonitorSource::UnknownSourceError | 2 | Se ha producido un error no identificado. |
Documentación de las funciones de los miembros
[explicit] QGeoAreaMonitorSource::QGeoAreaMonitorSource(QObject *parent)
Crea una fuente de monitor con la dirección parent.
[virtual noexcept] QGeoAreaMonitorSource::~QGeoAreaMonitorSource()
Destruye la fuente del monitor.
[pure virtual] QList<QGeoAreaMonitorInfo> QGeoAreaMonitorSource::activeMonitors() const
Devuelve la lista de todos los monitores activos conocidos por el objeto QGeoAreaMonitorSource.
Un monitor activo se inició mediante startMonitoring(). Para cada monitor activo, el objeto fuente emitirá las señales necesarias, como areaEntered() o areaExited(). Varias instancias de QGeoAreaMonitorSource dentro de la misma aplicación comparten los mismos objetos de monitor activo.
A menos que un activo QGeoAreaMonitorInfo isPersistent () un activo QGeoAreaMonitorInfo se detendrá una vez que la aplicación actual termine.
[pure virtual] QList<QGeoAreaMonitorInfo> QGeoAreaMonitorSource::activeMonitors(const QGeoShape &lookupArea) const
Devuelve la lista de todos los monitores activos conocidos por el objeto QGeoAreaMonitorSource cuyo centro se encuentra dentro de lookupArea. Si lookupArea está vacío, la lista devuelta estará vacía.
Se ha iniciado un monitor activo a través de startMonitoring(). Para cada monitor activo, el objeto fuente emitirá las señales requeridas, como areaEntered() o areaExited(). Varias instancias de QGeoAreaMonitorSource dentro de la misma aplicación comparten los mismos objetos de monitor activo.
A menos que un activo QGeoAreaMonitorInfo isPersistent () un activo QGeoAreaMonitorInfo se detendrá una vez que la aplicación actual termine.
Véase también QGeoShape.
[signal] void QGeoAreaMonitorSource::areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
Se emite cuando la posición actual ha pasado de una posición fuera de la monitor activa a una posición dentro de la zona supervisada.
update mantiene la nueva posición.
[signal] void QGeoAreaMonitorSource::areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
Se emite cuando la posición actual ha pasado de una posición dentro de la monitor activa a una posición fuera de la zona vigilada.
update mantiene la nueva posición.
[static] QStringList QGeoAreaMonitorSource::availableSources()
Devuelve una lista de los plugins de monitorización disponibles, incluyendo el backend por defecto del sistema si hay alguno disponible.
[virtual, since 6.2] QVariant QGeoAreaMonitorSource::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.
Esta función se introdujo en Qt 6.2.
Véase también setBackendProperty().
[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createDefaultSource(QObject *parent)
Crea y devuelve una fuente de monitor con el parent dado que monitoriza áreas utilizando recursos en el sistema subyacente.
Devuelve nullptr si el sistema no admite la supervisión de posiciones.
[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createSource(const QString &sourceName, QObject *parent)
Crea y devuelve una fuente de monitor con el nombre parent, cargando el complemento sourceName.
Devuelve nullptr si no se encuentra el complemento.
[pure virtual] QGeoAreaMonitorSource::Error QGeoAreaMonitorSource::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 startMonitoring() o requestUpdate().
[signal] void QGeoAreaMonitorSource::errorOccurred(QGeoAreaMonitorSource::Error areaMonitoringError)
Esta señal se emite tras producirse un error. El parámetro areaMonitoringError describe el tipo de error que se ha producido.
[signal] void QGeoAreaMonitorSource::monitorExpired(const QGeoAreaMonitorInfo &monitor)
Se emite cuando monitor ha caducado. Un monitor de área caducado se elimina automáticamente de la lista de activeMonitors().
Véase también activeMonitors().
[virtual] QGeoPositionInfoSource *QGeoAreaMonitorSource::positionInfoSource() const
Devuelve el QGeoPositionInfoSource actual utilizado por este objeto QGeoAreaMonitorSource. La función devolverá QGeoPositionInfoSource::createDefaultSource() si no se ha establecido ningún otro objeto.
La función devuelve nullptr si ni siquiera existe un QGeoPositionInfoSource por defecto.
Cualquier uso de la instancia QGeoPositionInfoSource devuelta debe tener en cuenta el hecho de que puede residir en un hilo diferente.
Véase también QGeoPositionInfoSource y setPositionInfoSource().
[pure virtual] bool QGeoAreaMonitorSource::requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal)
Activa la supervisión de área de una sola vez. La monitorización de área para monitor se realizará hasta que esta instancia QGeoAreaMonitorSource emita signal por primera vez. Una vez emitida la señal, monitor se elimina automáticamente de la lista de activeMonitors(). Si monitor no es válido o tiene una fecha de caducidad superada, esta función devuelve false.
QGeoAreaMonitor singleShotMonitor; QGeoAreaMonitorSource * source = QGeoAreaMonitorSource::createDefaultSource(this); //... bool ret = source->requestUpdate(singleShotMonitor, SIGNAL(areaExited(QGeoAreaMonitor,QGeoPositionInfo)));
El objeto singleShotMonitor anterior dejará de enviar actualizaciones una vez que la señal areaExited() haya sido emitida por primera vez. Hasta ese momento cualquier otra señal podrá ser emitida cero o más veces dependiendo del contexto de la zona.
No es posible solicitar simultáneamente actualizaciones para más de una señal del mismo objeto monitor. La última llamada a esta función determina la señal a partir de la cual cesan las actualizaciones. En este momento sólo pueden utilizarse las señales areaEntered() y areaExited() para finalizar el proceso de monitorización.
La solicitud de monitorización persistente en una instancia de QGeoAreaMonitorSource falla si el backend de monitorización de área no admite QGeoAreaMonitorSource::PersistentAreaMonitorFeature.
Si monitor ya estaba registrado a través de startMonitoring() se convierte a un comportamiento de disparo único.
Nota: Desde Qt6 este método siempre restablece el último error a NoError antes de iniciar la monitorización.
Véase también startMonitoring() y stopMonitoring().
[virtual, since 6.2] bool QGeoAreaMonitorSource::setBackendProperty(const QString &name, const QVariant &value)
Establece la propiedad específica del backend denominada name en value. Devuelve true en caso de éxito, en caso contrario devuelve false. Las propiedades específicas de backend pueden utilizarse para configurar el comportamiento del subsistema de monitorización de área en tiempo de ejecución.
Esta función se introdujo en Qt 6.2.
Véase también backendProperty().
[virtual] void QGeoAreaMonitorSource::setPositionInfoSource(QGeoPositionInfoSource *newSource)
Establece el nuevo QGeoPositionInfoSource que utilizará este objeto QGeoAreaMonitorSource. El backend de monitorización de área se convierte en el nuevo QObject padre para newSource. El objeto QGeoPositionInfoSource anterior será eliminado. Todas las instancias QGeoAreaMonitorSource basadas en el mismo sourceName() comparten la misma instancia QGeoPositionInfoSource.
Esto puede ser útil cuando se desea manipular el sistema de posicionamiento utilizado por el motor de monitorización de área.
Nótese que la propiedad debe ser cuidada por las subclases de QGeoAreaMonitorSource. Debido al patrón singleton detrás de esta clase newSource puede ser movida a un nuevo hilo.
Véase también positionInfoSource().
QString QGeoAreaMonitorSource::sourceName() const
Devuelve el nombre único de la implementación de fuente de monitor de área en uso.
Este es el mismo nombre que se puede pasar a createSource() para crear una nueva instancia de una implementación de fuente de monitor de área concreta.
[pure virtual] bool QGeoAreaMonitorSource::startMonitoring(const QGeoAreaMonitorInfo &monitor)
Devuelve true si se ha podido iniciar con éxito la monitorización de monitor; en caso contrario devuelve false. Una razón para no poder iniciar la monitorización podría ser la no disponibilidad de una fuente de información de posición por defecto apropiada mientras no se haya establecido una alternativa QGeoPositionInfoSource a través de setPositionInfoSource().
Si monitor ya está activo, el objeto monitor existente será reemplazado por la nueva referencia monitor. La identificación de las instancias de QGeoAreaMonitorInfo se realiza a través de QGeoAreaMonitorInfo::identifier(). Por lo tanto, esta función también puede utilizarse para actualizar los monitores activos.
Si monitor tiene una fecha de caducidad pasada, esta función devuelve false. La llamada a esta función para un monitor de disparo único ya registrado a través de requestUpdate() cambia el monitor a un modo de monitorización permanente.
La solicitud de monitorización permanente en una instancia de QGeoAreaMonitorSource falla si el backend de monitorización de área no soporta QGeoAreaMonitorSource::PersistentAreaMonitorFeature.
Nota: Desde Qt6 este método siempre restablece el último error a NoError antes de iniciar la monitorización.
Véase también stopMonitoring().
[pure virtual] bool QGeoAreaMonitorSource::stopMonitoring(const QGeoAreaMonitorInfo &monitor)
Devuelve true si monitor fue eliminado con éxito de la lista de activeMonitors(); en caso contrario devuelve false. Este comportamiento es independiente de si monitor se registró a través de startMonitoring() o requestUpdate().
[pure virtual] QGeoAreaMonitorSource::AreaMonitorFeatures QGeoAreaMonitorSource::supportedAreaMonitorFeatures() const
Devuelve las funciones de supervisión de área disponibles para esta fuente.
© 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.