Spec-Zone.ru › Qt 5.12

Класс QGeoAreaMonitorSource

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

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

Типы public

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

Функции public

QGeoAreaMonitorSource(QObject *parent)
виртуальный ~QGeoAreaMonitorSource()
виртуальный QList<QGeoAreaMonitorInfo> activeMonitors() const = 0
виртуальный QList<QGeoAreaMonitorInfo> activeMonitors(const QGeoShape &lookupArea) const = 0
виртуальный QGeoAreaMonitorSource::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
виртуальный QGeoAreaMonitorSource::AreaMonitorFeatures supportedAreaMonitorFeatures() const = 0
  • 31 функция public, унаследованная от 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

Статические члены public

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

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

  • 1 свойство, унаследованное от QObject
  • 1 public слот, унаследованный от 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] QGeoAreaMonitorSource::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 будет заменён новой ссылкой 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] QGeoAreaMonitorSource::AreaMonitorFeatures QGeoAreaMonitorSource::supportedAreaMonitorFeatures() const

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

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

Spec-Zone.ru

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