QGeoAreaMonitorSource Class
QGeoAreaMonitorSource 클래스를 사용하면 지정된 좌표 집합에 대한 근접성 변화를 감지할 수 있습니다. 더 보기...
| 헤더: | #include <QGeoAreaMonitorSource> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
| qmake: | QT += positioning |
| 상속: | QObject |
공개 타입
| enum | AreaMonitorFeature { PersistentAreaMonitorFeature, AnyAreaMonitorFeature } |
| flags | AreaMonitorFeatures |
| enum | Error { AccessError, InsufficientPositionInfo, NoError, UnknownSourceError } |
공개 함수
| 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 |
신호
| 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) |
정적 공용 멤버
| QStringList | availableSources() |
| QGeoAreaMonitorSource * | createDefaultSource(QObject *parent) |
| QGeoAreaMonitorSource * | createSource(const QString &sourceName, QObject *parent) |
상세 설명
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()`을 가진 이 클래스의 각 인스턴스는 동일한 영역 모니터링 백엔드를 공유합니다. ` startMonitoring()` 또는 ` requestUpdate()`을 통해 새로운 ` QGeoAreaMonitorInfo ` 객체가 추가되면, 이 클래스의 다른 인스턴스에서 해당 객체를 가져올 수 있습니다(단, 동일한 영역 모니터 제공자 플러그인에서 제공된 경우에만 해당). 이 클래스에서 사용하는 QGeoPositionInfoSource 인스턴스에도 동일한 싱글톤 패턴이 적용됩니다. 다음 코드 조각은 이러한 동작을 잘 보여줍니다:
QGeoAreaMonitorSource *s1 = QGeoAreaMonitorSource::createSource("blah", this);
QGeoAreaMonitorSource *s2 = QGeoAreaMonitorSource::createSource("blah", this);
QVERIFY(s1->positionInfoSource() == s2->positionInfoSource);멤버 유형 설명
enum QGeoAreaMonitorSource::AreaMonitorFeature
flags QGeoAreaMonitorSource::AreaMonitorFeatures
지역 감시 기능의 유형을 정의합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGeoAreaMonitorSource::PersistentAreaMonitorFeature | 0x00000001 | QGeoAreaMonitorInfo 인스턴스를 영구적으로 설정할 수 있습니다. 영구 모니터는 모니터를 관리하는 애플리케이션이 실행되지 않을 때도 계속 활성 상태를 유지합니다. |
QGeoAreaMonitorSource::AnyAreaMonitorFeature | 0xffffffff | 가능한 모든 영역 모니터링 기능에 일치합니다. |
AreaMonitorFeatures 유형은 QFlags<AreaMonitorFeature>에 대한 typedef입니다. 이 유형은 AreaMonitorFeature 값들의 OR 조합을 저장합니다.
enum QGeoAreaMonitorSource::Error
위치 지정 방법의 유형을 정의합니다.
Error 열거형은 발생할 수 있는 오류를 나타냅니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGeoAreaMonitorSource::AccessError | 0 | 응용 프로그램에 필요한 권한이 부족하여 원격 지역 모니터링 백엔드에 대한 연결 설정에 실패했습니다. |
QGeoAreaMonitorSource::InsufficientPositionInfo | 1 | 애플리케이션에 필요한 권한이 부족하여 원격 지역 모니터링 백엔드에 대한 연결 설정에 실패했습니다. 지역 모니터링 소스가 위치 정보를 검색할 수 없거나, 위치 정보의 정확도가 효과적인 지역 모니터링을 제공하기에 충분하지 않습니다. |
QGeoAreaMonitorSource::NoError | 3 | 오류가 발생하지 않았습니다. |
QGeoAreaMonitorSource::UnknownSourceError | 2 | 알 수 없는 오류가 발생했습니다. |
멤버 함수 문서
[explicit] QGeoAreaMonitorSource::QGeoAreaMonitorSource(QObject *parent)
지정된 parent 를 사용하여 모니터 소스를 생성합니다.
[virtual noexcept] 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()
사용 가능한 모니터 플러그인 목록을 반환하며, 사용 가능한 경우 기본 시스템 백엔드도 포함됩니다.
[virtual, since 6.2] QVariant QGeoAreaMonitorSource::backendProperty(const QString &name) const
name 라는 백엔드별 속성이 존재하는 경우, 해당 속성의 값을 반환합니다. 그렇지 않은 경우 반환되는 값은 유효하지 않습니다.
이 함수는 Qt 6.2에서 도입되었습니다.
setBackendProperty()도 참조하십시오 .
[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createDefaultSource(QObject *parent)
지정된 위치 모니터링( parent )을 사용하여 기본 시스템의 리소스를 활용해 특정 영역을 모니터링하는 모니터 소스를 생성하고 반환합니다.
시스템이 위치 모니터링을 지원하지 않는 경우 ` nullptr `를 반환합니다.
[static] QGeoAreaMonitorSource *QGeoAreaMonitorSource::createSource(const QString &sourceName, QObject *parent)
sourceName 라는 이름의 플러그인을 불러와, 지정된 parent 를 가진 모니터 소스를 생성하여 반환합니다.
플러그인을 찾을 수 없는 경우 nullptr 을 반환합니다.
[pure virtual] QGeoAreaMonitorSource::Error QGeoAreaMonitorSource::error() const
마지막으로 발생한 오류의 유형을 반환합니다.
참고: Qt6부터는 ` startMonitoring()` 또는 ` requestUpdate()`를 호출할 때마다 마지막 오류 정보가 항상 초기화됩니다.
[signal] void QGeoAreaMonitorSource::errorOccurred(QGeoAreaMonitorSource::Error areaMonitoringError)
이 신호는 오류가 발생한 후에 전송됩니다. ‘ areaMonitoringError ’ 매개변수는 발생한 오류의 유형을 나타냅니다.
[signal] void QGeoAreaMonitorSource::monitorExpired(const QGeoAreaMonitorInfo &monitor)
monitor 의 유효 기간이 만료되었을 때 발생합니다. 유효 기간이 만료된 영역 모니터는 activeMonitors() 목록에서 자동으로 제거됩니다.
activeMonitors()도 참조하십시오 .
[virtual] QGeoPositionInfoSource *QGeoAreaMonitorSource::positionInfoSource() const
이 QGeoAreaMonitorSource 객체가 현재 사용하고 있는 QGeoPositionInfoSource 를 반환합니다. 다른 객체가 설정되어 있지 않은 경우, 이 함수는 QGeoPositionInfoSource::createDefaultSource()을 반환합니다.
기본 QGeoPositionInfoSource 조차 존재하지 않는 경우, 이 함수는 nullptr 를 반환합니다.
반환된 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() 신호가 처음으로 발신되면 더 이상 업데이트를 전송하지 않습니다. 이 시점까지는 영역 컨텍스트에 따라 다른 신호가 0회 이상 발신될 수 있습니다.
동일한 모니터 객체에 대해 두 개 이상의 신호에 대한 업데이트를 동시에 요청할 수는 없습니다. 이 함수에 대한 마지막 호출이 업데이트가 중단될 신호를 결정합니다. 이 단계에서는 areaEntered() 및 areaExited() 신호만 사용하여 모니터링 프로세스를 종료할 수 있습니다.
QGeoAreaMonitorSource 인스턴스에 대한 지속적 모니터링을 요청할 때, 영역 모니터링 백엔드가 QGeoAreaMonitorSource::PersistentAreaMonitorFeature 를 지원하지 않으면 실패합니다.
monitor 가 이미 startMonitoring()를 통해 등록된 경우, 단일 실행 동작으로 변환됩니다.
참고: Qt6부터 이 메서드는 모니터링을 시작하기 전에 항상 NoError 의 마지막 오류를 초기화합니다.
startMonitoring() 및 stopMonitoring()도 참조하십시오 .
[virtual, since 6.2] bool QGeoAreaMonitorSource::setBackendProperty(const QString &name, const QVariant &value)
name 라는 백엔드별 속성을 value 로 설정합니다. 성공 시 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다. 백엔드별 속성을 사용하여 런타임 시 영역 모니터링 하위 시스템의 동작을 구성할 수 있습니다.
이 함수는 Qt 6.2에서 도입되었습니다.
backendProperty()도 참조하십시오 .
[virtual] void QGeoAreaMonitorSource::setPositionInfoSource(QGeoPositionInfoSource *newSource)
이 QGeoAreaMonitorSource 객체가 사용할 새로운 QGeoPositionInfoSource 를 설정합니다. 영역 모니터링 백엔드는 newSource 의 새로운 QObject 부모가 됩니다. 이전 QGeoPositionInfoSource 객체는 삭제됩니다. 동일한 sourceName()을 기반으로 하는 모든 QGeoAreaMonitorSource 인스턴스는 동일한 QGeoPositionInfoSource 인스턴스를 공유합니다.
이는 영역 모니터링 엔진이 사용하는 위치 지정 시스템을 조작해야 할 때 유용할 수 있습니다.
QGeoAreaMonitorSource 의 하위 클래스에서 소유권을 적절히 관리해야 한다는 점에 유의하십시오. 이 클래스의 기반이 되는 싱글톤 패턴으로 인해 newSource 는 새로운 스레드로 이동될 수 있습니다.
positionInfoSource()도 참조하십시오 .
QString QGeoAreaMonitorSource::sourceName() const
사용 중인 영역 모니터 소스 구현체의 고유 이름을 반환합니다.
이는 특정 영역 모니터 소스 구현체의 새 인스턴스를 생성하기 위해 ` createSource()`에 전달할 수 있는 이름과 동일합니다.
[pure virtual] bool QGeoAreaMonitorSource::startMonitoring(const QGeoAreaMonitorInfo &monitor)
monitor 에 대한 모니터링을 성공적으로 시작할 수 있으면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다. 모니터링을 시작할 수 없는 이유 중 하나는 적절한 기본 위치 정보 소스를 사용할 수 없는데, setPositionInfoSource()를 통해 대체 QGeoPositionInfoSource 가 설정되지 않았기 때문일 수 있습니다.
monitor 가 이미 활성화된 상태라면, 기존 모니터 객체는 새로운 monitor 참조로 대체됩니다. QGeoAreaMonitorInfo 인스턴스의 식별은 QGeoAreaMonitorInfo::identifier()를 통해 이루어집니다. 따라서 이 함수는 활성화된 모니터를 업데이트하는 데에도 사용할 수 있습니다.
monitor 의 만료일이 이미 지났을 경우, 이 함수는 false를 반환합니다. requestUpdate()을 통해 이미 등록된 단일 실행 모니터에 대해 이 함수를 호출하면 모니터가 영구 모니터링 모드로 전환됩니다.
QGeoAreaMonitorSource 인스턴스에 대해 지속적 모니터링을 요청할 때, 영역 모니터링 백엔드가 QGeoAreaMonitorSource::PersistentAreaMonitorFeature 를 지원하지 않으면 요청이 실패합니다.
참고: Qt6부터 이 메서드는 모니터링을 시작하기 전에 항상 마지막 오류를 NoError 로 재설정합니다.
stopMonitoring()도 참조하십시오 .
[pure virtual] bool QGeoAreaMonitorSource::stopMonitoring(const QGeoAreaMonitorInfo &monitor)
monitor 가 activeMonitors() 목록에서 성공적으로 제거된 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다. 이 동작은 monitor 가 startMonitoring()를 통해 등록되었는지, 아니면 requestUpdate()를 통해 등록되었는지에 관계없이 동일하게 적용됩니다.
[pure virtual] QGeoAreaMonitorSource::AreaMonitorFeatures QGeoAreaMonitorSource::supportedAreaMonitorFeatures() const
이 소스에서 사용할 수 있는 지역 모니터링 기능을 반환합니다.
© 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.