Spec-Zone.ru › Qt 5.11

Класс QGeoAreaMonitorSource

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

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

Открытые типы

перечисление AreaMonitorFeature { PersistentAreaMonitorFeature, AnyAreaMonitorFeature }
флаги AreaMonitorFeatures
перечисление Ошибка { ОшибкаДоступа, НедостаточноДанныхПозиционирования, БезОшибок, НеизвестнаяОшибкаИсточника }

Открытые функции

QGeoAreaMonitorSource(QObject *parent)
виртуальный ~QGeoAreaMonitorSource()
виртуальный QList<QGeoAreaMonitorInfo> activeMonitors() const = 0
виртуальный QList<QGeoAreaMonitorInfo> activeMonitors(const QGeoShape &lookupArea) const = 0
виртуальный QGeoAreaMonitorSource::Ошибка error() const = 0
виртуальный QGeoPositionInfoSource * positionInfoSource() const
виртуальный bool requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0
виртуальный void setPositionInfoSource(QGeoPositionInfoSource *newSource)
QString имяИсточника() const
виртуальный bool начатьМониторинг(const QGeoAreaMonitorInfo &monitor) = 0
виртуальный bool остановитьМониторинг(const QGeoAreaMonitorInfo &monitor) = 0
виртуальный QGeoAreaMonitorSource::AreaMonitorFeatures поддерживаемыеОсобенностиМониторингаОбласти() const = 0
  • 34 открытых функции, унаследованные от QObject

Сигналы

void входВОбласть(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
void выходИзОбласти(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
void ошибка(QGeoAreaMonitorSource::Ошибка areaMonitoringError)
void мониторПросрочен(const QGeoAreaMonitorInfo &monitor)
  • 2 сигнала, унаследованные от QObject

Статические открытые члены

QStringList доступныеИсточники()
QGeoAreaMonitorSource * создатьИсточенИсточникПоУмолчанию(QObject *parent)
QGeoAreaMonitorSource * создатьИсточник(const QString &sourceName, QObject *parent)
  • 10 статических открытых членов, унаследованных от QObject

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

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 1 открытая переменная, унаследованная от QObject
  • 9 защищенных функций, унаследованных от QObject
  • 2 защищенных переменных, унаследованных от 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 следует паттерну синглтона. Каждый экземпляр класса с одинаковым именемИсточника() использует один и тот же бэкэнд для мониторинга областей. Если новый объект QGeoAreaMonitorInfo добавляется через начатьМониторинг() или 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::Ошибка

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

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

Константа Значение Описание
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. Идентификация экземпляров QGeoAreaMonitorInfo происходит через QGeoAreaMonitorInfo::identifier(). Поэтому эта функция также может быть использована для обновления активных мониторов.

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

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

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

[pure virtual] bool QGeoAreaMonitorSource::stopMonitoring(const QGeoAreaMonitorInfo &монитор)

Возвращает true, если монитор был успешно удален из списка activeMonitors; в противном случае возвращает false. Это поведение независимо от того, был ли монитор зарегистрирован через 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/archives/qt-5.11/qgeoareamonitorsource.html

Spec-Zone.ru

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