Spec-Zone.ru › Qt 5.9

Класс QGeoAreaMonitorSource

Класс QGeoAreaMonitorSource позволяет определять изменения близости для заданного набора координат. Подробнее...

Заголовок: #include <QGeoAreaMonitorSource>
qmake: QT += positioning
С момента: Qt 5.2
Наследует: QObject
  • Список всех членов, включая унаследованные

Типы публичного доступа

перечисление AreaMonitorFeature { PersistentAreaMonitorFeature, AnyAreaMonitorFeature }
флаги AreaMonitorFeatures
перечисление Error { AccessError, InsufficientPositionInfo, NoError, UnknownSourceError }

Публичные функции

QGeoAreaMonitorSource(QObject *parent)
виртуальный ~QGeoAreaMonitorSource()
виртуальный QList<QGeoAreaMonitorInfo> activeMonitors() const = 0
виртуальный QList<QGeoAreaMonitorInfo> activeMonitors(const QGeoShape &lookupArea) const = 0
виртуальный Error error() const = 0
виртуальный QGeoPositionInfoSource * positionInfoSource() const
виртуальный bool requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0
виртуальный void setPositionInfoSource(QGeoPositionInfoSource *newSource)
QString sourceName() const
виртуальный bool startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0
виртуальный bool stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0
виртуальный AreaMonitorFeatures supportedAreaMonitorFeatures() const = 0
  • 32 публичных функций, унаследованных от QObject

Сигналы

void areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
void areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
void error(QGeoAreaMonitorSource::Error areaMonitoringError)
void monitorExpired(const QGeoAreaMonitorInfo &monitor)
  • 2 сигнала, унаследованные от QObject

Статические публичные члены

QStringList availableSources()
QGeoAreaMonitorSource * createDefaultSource(QObject *parent)
QGeoAreaMonitorSource * createSource(const QString &sourceName, QObject *parent)
  • 11 статических публичных членов, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 публичный слот, унаследованный от QObject
  • 9 защищенных функций, унаследованных от QObject

Подробное описание

Класс QGeoAreaMonitorSource позволяет определять изменения близости для заданного набора координат.

Класс QGeoAreaMonitorSource генерирует сигналы, когда текущее положение находится в пределах заданной области или перемещается за её пределы. Каждая область задаётся объектом QGeoAreaMonitorInfo. Например:

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(position, 100));

            monitor->startMonitoring(bigBen);

        } else {
            qDebug() << "Could not create default area monitor";
        }
    }

public Q_SLOTS:
    void areaEntered(const QGeoAreaMonitorInfo &mon, const QGeoPositionInfo &update)
    {
        Q_UNUSED(mon)

        qDebug() << "Now within 100 meters, current position is" << update.coordinate();
    }

    void areaExited(const QGeoAreaMonitorInfo &mon, const QGeoPositionInfo &update)
    {
        Q_UNUSED(mon)

        qDebug() << "No longer within 100 meters, current position is" << update.coordinate();
    }

QGeoAreaMonitorSource следует паттерну синглтона. Каждый экземпляр класса с одинаковым именем sourceName() использует один и тот же бэкенд мониторинга областей. Если новый объект QGeoAreaMonitorInfo добавляется через startMonitoring() или requestUpdate(), его можно получить из другого экземпляра этого класса (при условии, что они получены от одного и того же плагина поставщика мониторинга областей). Аналогичный паттерн синглтона применяется к экземпляру QGeoPositionInfoSource, используемому этим классом. Следующий фрагмент кода подчеркивает это поведение:

QGeoAreaMonitorSource *s1 = QGeoAreaMonitorSource::createSource("blah", this);
QGeoAreaMonitorSource *s2 = QGeoAreaMonitorSource::createSource("blah", this);
QVERIFY(s1->positionInfoSource() == s2->positionInfoSource);

Документация по типам членов

перечисление QGeoAreaMonitorSource::AreaMonitorFeatureфлаги QGeoAreaMonitorSource::AreaMonitorFeatures

Определяет типы возможностей мониторинга областей.

Постоянная Значение Описание
QGeoAreaMonitorSource::PersistentAreaMonitorFeature 0x00000001 Экземпляры QGeoAreaMonitorInfo могут быть сделаны постоянными. Постоянный монитор остается активным даже при отсутствии приложения, управляющего монитором.
QGeoAreaMonitorSource::AnyAreaMonitorFeature 0xffffffff Соответствует всем возможным функциям мониторинга областей.

Тип AreaMonitorFeatures является псевдонимом для QFlags<AreaMonitorFeature>. Он хранит логическое ИЛИ сочетание значений AreaMonitorFeature.

перечисление QGeoAreaMonitorSource::Error

Определяет типы методов позиционирования.

Перечисление Error представляет собой ошибки, которые могут возникнуть.

Постоянная Значение Описание
QGeoAreaMonitorSource::AccessError 0 Настройка подключения к удаленному бэкенду мониторинга областей не удалась, так как у приложения не было необходимых привилегий.
QGeoAreaMonitorSource::InsufficientPositionInfo 1 Источник мониторинга областей не смог получить позицию или точность позиции недостаточна для эффективного мониторинга областей.
QGeoAreaMonitorSource::NoError 3 Ошибка не произошла.
QGeoAreaMonitorSource::UnknownSourceError 2 Произошла неизвестная ошибка.

Документация по функциям-членам

QGeoAreaMonitorSource::QGeoAreaMonitorSource(QObject *parent)

Создаёт монитор с заданным parent.

[virtual] QGeoAreaMonitorSource::~QGeoAreaMonitorSource()

Удаляет монитор.

[pure virtual] QList<QGeoAreaMonitorInfo> QGeoAreaMonitorSource::activeMonitors() const

Возвращает список всех активных мониторов, известных объекту QGeoAreaMonitorSource.

Активный монитор был запущен через startMonitoring() объект источника будет излучать необходимые сигналы, такие как areaEntered() или areaExited(). Несколько экземпляров QGeoAreaMonitorSource в рамках одного приложения используют общие объекты активного монитора.

Если активный QGeoAreaMonitorInfo isPersistent() активный QGeoAreaMonitorInfo будет остановлен после завершения текущего приложения.

[pure virtual] QList<QGeoAreaMonitorInfo> QGeoAreaMonitorSource::activeMonitors(const QGeoShape &lookupArea) const

Возвращает список всех активных мониторов, известных объекту QGeoAreaMonitorSource, центр которых находится внутри lookupArea. Если lookupArea пуста, возвращаемый список будет пустым.

Активный монитор был запущен через startMonitoring(), и объект источника будет излучать необходимые сигналы, такие как areaEntered() или areaExited(). Несколько экземпляров QGeoAreaMonitorSource в рамках одного приложения используют одни и те же объекты монитора.

Если активный QGeoAreaMonitorInfo isPersistent(), активный QGeoAreaMonitorInfo будет остановлен после завершения текущего приложения.

См. также QGeoShape.

[signal] void QGeoAreaMonitorSource::areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)

Излучается, когда текущее положение переместилось из положения вне активного monitor в положение внутри контролируемой области.

update содержит новое положение.

[signal] void QGeoAreaMonitorSource::areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)

Излучается, когда текущее положение переместилось из положения внутри активного monitor в положение за пределами контролируемой области.

update содержит новое положение.

[static] QStringList QGeoAreaMonitorSource::availableSources()

Возвращает список доступных плагинов монитора, включая системный бэкенд по умолчанию, если он доступен.

[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createDefaultSource(QObject *parent)

Создаёт и возвращает монитор с заданным parent, который отслеживает области, используя ресурсы на базовой системе.

Возвращает 0, если система не поддерживает мониторинг местоположения.

[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createSource(const QString &sourceName, QObject *parent)

Создаёт и возвращает монитор с заданным parent, загрузив плагин с именем sourceName.

Возвращает 0, если плагин не найден.

[pure virtual] Error QGeoAreaMonitorSource::error() const

Возвращает тип ошибки, которая произошла последней.

[signal] void QGeoAreaMonitorSource::error(QGeoAreaMonitorSource::Error areaMonitoringError)

Этот сигнал излучается после возникновения ошибки. Параметр areaMonitoringError описывает тип возникшей ошибки.

Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя функции Qt предоставляет удобный помощник для получения указателя на функцию, как показано в этом примере:

connect(geoAreaMonitorSource, QOverload<QGeoAreaMonitorSource::Error>::of(&QGeoAreaMonitorSource::error),
    [=](QGeoAreaMonitorSource::Error areaMonitoringError){ /* ... */ });

[signal] void QGeoAreaMonitorSource::monitorExpired(const QGeoAreaMonitorInfo &monitor)

Излучается, когда monitor истек. Истекший монитор области автоматически удаляется из списка activeMonitors().

См. также activeMonitors().

[virtual] QGeoPositionInfoSource *QGeoAreaMonitorSource::positionInfoSource() const

Возвращает текущий QGeoPositionInfoSource, используемый этим объектом QGeoAreaMonitorSource. Функция вернёт QGeoPositionInfoSource::createDefaultSource(), если не был установлен другой объект.

Функция возвращает 0, если не существует даже системный QGeoPositionInfoSource по умолчанию.

Любое использование возвращённого экземпляра QGeoPositionInfoSource должно учитывать тот факт, что он может находиться в другом потоке.

См. также QGeoPositionInfoSource и setPositionInfoSource().

[pure virtual] bool QGeoAreaMonitorSource::requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal)

Включает однократный мониторинг области. Мониторинг области для monitor будет выполняться до тех пор, пока этот экземпляр QGeoAreaMonitorSource не излучит signal в первый раз. После излучения сигнала monitor автоматически удаляется из списка activeMonitors(). Если monitor недействителен или срок его действия истек, эта функция возвращает false.

QGeoAreaMonitor singleShotMonitor;
QGeoAreaMonitorSource * source = QGeoAreaMonitorSource::createDefaultSource(this);
//...
bool ret = source->requestUpdate(singleShotMonitor,
                      SIGNAL(areaExited(QGeoAreaMonitor,QGeoPositionInfo)));

Вышеуказанный singleShotMonitor объект перестанет отправлять обновления после первого излучения сигнала areaExited(). До этого момента любой другой сигнал может быть излучен ноль или более раз, в зависимости от контекста области.

Невозможно одновременно запросить обновления для более чем одного сигнала одного и того же объекта монитора. Последний вызов этой функции определяет сигнал, по которому обновления перестанут продолжаться. На этом этапе только сигналы areaEntered() и areaExited() могут быть использованы для завершения процесса мониторинга.

Запрос постоянного мониторинга на экземпляре QGeoAreaMonitorSource терпит неудачу, если бэкенд мониторинга областей не поддерживает QGeoAreaMonitorSource::PersistentAreaMonitorFeature.

Если monitor уже был зарегистрирован через startMonitoring(), его поведение преобразуется в однократное.

См. также startMonitoring() и stopMonitoring().

[virtual] void QGeoAreaMonitorSource::setPositionInfoSource(QGeoPositionInfoSource *newSource)

Устанавливает новый QGeoPositionInfoSource, который будет использоваться этим объектом QGeoAreaMonitorSource. Бэкенд мониторинга областей становится новым родителем QObject для newSource. Предыдущий объект QGeoPositionInfoSource будет удалён. Все экземпляры QGeoAreaMonitorSource, основанные на том же sourceName(), используют один и тот же экземпляр QGeoPositionInfoSource.

Это может быть полезно, когда желательно манипулировать системой позиционирования, используемой движком мониторинга областей.

Обратите внимание, что управление собственностью должно осуществляться подклассами QGeoAreaMonitorSource. Из-за паттерна синглтон за этим классом newSource может быть перемещён в новый поток.

См. также positionInfoSource().

QString QGeoAreaMonitorSource::sourceName() const

Возвращает уникальное имя реализации источника монитора областей, используемой в данный момент.

Это то же имя, которое может быть передано в createSource() для создания нового экземпляра конкретной реализации источника монитора областей.

[pure virtual] bool QGeoAreaMonitorSource::startMonitoring(const QGeoAreaMonitorInfo &monitor)

Возвращает true если мониторинг monitor был успешно запущен; в противном случае возвращает false. Причиной невозможности запуска мониторинга может быть отсутствие соответствующего источника информации о положении по умолчанию, если альтернативный QGeoPositionInfoSource не был задан через setPositionInfoSource().

Если monitor уже активен, существующий объект монитора будет заменён новой ссылкой monitor. Идентификация экземпляров QGeoAreaMonitorInfo происходит через QGeoAreaMonitorInfo::identifier(). Поэтому эта функция также может быть использована для обновления активных мониторов.

Если у monitor истек срок действия, эта функция возвращает false. Вызов этой функции для уже зарегистрированного однократного монитора через requestUpdate() переключает монитор в режим постоянного мониторинга.

Запрос постоянного мониторинга на экземпляре QGeoAreaMonitorSource завершается неудачей, если бэкенд мониторинга областей не поддерживает QGeoAreaMonitorSource::PersistentAreaMonitorFeature.

См. также stopMonitoring().

[pure virtual] bool QGeoAreaMonitorSource::stopMonitoring(const QGeoAreaMonitorInfo &monitor)

Возвращает true, если monitor был успешно удален из списка activeMonitors; в противном случае возвращает false. Это поведение независимо от того, был ли monitor зарегистрирован с помощью startMonitoring() или requestUpdate().

[pure virtual] AreaMonitorFeatures QGeoAreaMonitorSource::supportedAreaMonitorFeatures() const

Возвращает доступные функции мониторинга областей для этого источника.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qgeoareamonitorsource.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API