이 페이지에서

QGeoPositionInfoSource Class

QGeoPositionInfoSource 클래스는 위치 업데이트를 배포하기 위한 추상 기본 클래스입니다. 더 보기...

헤더: #include <QGeoPositionInfoSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
상속: QObject
상속받는 클래스:

QNmeaPositionInfoSource

공개 유형

enum Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError }
enum PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods }
flags PositioningMethods

속성

공개 함수

QGeoPositionInfoSource(QObject *parent)
virtual ~QGeoPositionInfoSource()
(since Qt 5.14) virtual QVariant backendProperty(const QString &name) const
QBindable<QGeoPositionInfoSource::PositioningMethods> bindablePreferredPositioningMethods()
QBindable<int> bindableUpdateInterval()
virtual QGeoPositionInfoSource::Error error() const = 0
virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0
virtual int minimumUpdateInterval() const = 0
QGeoPositionInfoSource::PositioningMethods preferredPositioningMethods() const
(since Qt 5.14) virtual bool setBackendProperty(const QString &name, const QVariant &value)
virtual void setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods)
virtual void setUpdateInterval(int msec)
QString sourceName() const
virtual QGeoPositionInfoSource::PositioningMethods supportedPositioningMethods() const = 0
int updateInterval() const

공개 슬롯

virtual void requestUpdate(int timeout = 0) = 0
virtual void startUpdates() = 0
virtual void stopUpdates() = 0

신호

void errorOccurred(QGeoPositionInfoSource::Error positioningError)
void positionUpdated(const QGeoPositionInfo &update)
(since Qt 5.12) void supportedPositioningMethodsChanged()

정적 공용 멤버

QStringList availableSources()
QGeoPositionInfoSource *createDefaultSource(QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createDefaultSource(const QVariantMap &parameters, QObject *parent)
QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

상세 설명

정적 함수 ` QGeoPositionInfoSource::createDefaultSource()`는 사용 가능한 경우 해당 플랫폼에 적합한 기본 위치 소스를 생성합니다. 그렇지 않은 경우, `QGeoPositionInfoSource`는 ` QGeoPositionInfoSourceFactory ` 인터페이스를 구현하는 사용 가능한 플러그인을 확인합니다.

QGeoPositionInfoSource의 서브클래스 사용자는 requestUpdate()를 사용하여 현재 위치를 요청하거나, startUpdates() 및 stopUpdates()를 사용하여 정기적인 위치 업데이트를 시작 및 중지할 수 있습니다. 업데이트가 가능할 때 positionUpdated()가 발행됩니다. 마지막으로 알려진 위치는 lastKnownPosition()를 통해 액세스할 수 있습니다.

정기적인 위치 업데이트가 필요한 경우, setUpdateInterval()를 사용하여 이러한 업데이트가 얼마나 자주 발행되어야 하는지 지정할 수 있습니다. 간격이 지정되지 않으면, 업데이트가 가능한 때마다 업데이트가 제공됩니다. 예를 들어:

// Emit updates every 10 seconds if available
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0);
if (source)
    source->setUpdateInterval(10000);

이전에 설정된 업데이트 간격을 제거하려면 setUpdateInterval()를 호출하고 값으로 0을 전달하십시오.

참고: 위치소스에는 minimumUpdateInterval()에서 반환되는 대로 업데이트 간격에 대한 최소값 요구 사항이 있을 수 있습니다.

참고: Android 서비스에서 이 클래스를사용하려면 Android의 `Qt Positioning `을 참조하십시오.

멤버 유형 설명서

enum QGeoPositionInfoSource::Error

Error 열거형은 발생할 수 있는 오류를 나타냅니다.

상수값설명
QGeoPositionInfoSource::AccessError0애플리케이션에 필요한 권한이 없어 원격 위치 정보 백엔드에 대한 연결 설정에 실패했습니다.
QGeoPositionInfoSource::ClosedError1원격 위치 백엔드가 연결을 종료했습니다. 이는 예를 들어 사용자가 위치 서비스를 끄는 경우 등에 발생합니다. 위치 서비스가 다시 활성화되는 즉시 정기적인 업데이트가 재개됩니다.
QGeoPositionInfoSource::NoError3오류가 발생하지 않았습니다.
QGeoPositionInfoSource::UnknownSourceError2알 수 없는 오류가 발생했습니다.
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2)4requestUpdate()가 호출된 경우, 이 오류는 지정된 타임아웃 내에 현재 위치를 가져올 수 없음을 나타냅니다. startUpdates()가 호출된 경우, 이 오류는 이 QGeoPositionInfoSource 하위 클래스가 더 이상 정기적인 업데이트를 제공할 수 없다고 판단했음을 나타냅니다. 후자의 경우, 정기적인 업데이트가 재개될 때까지는 이 오류가 다시 발생하지 않습니다.

enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods

위치 지정 방법의 유형을 정의합니다.

상수값설명
QGeoPositionInfoSource::NoPositioningMethods0x00000000위치 확인 방법 중 어느 것도 해당되지 않음.
QGeoPositionInfoSource::SatellitePositioningMethods0x000000ffGPS 또는 GLONASS와 같은 위성 기반 위치 파악 방법.
QGeoPositionInfoSource::NonSatellitePositioningMethods0xffffff003GPP 셀 식별자나 Wi-Fi 기반 위치 파악과 같은 기타 위치 파악 방법.
QGeoPositionInfoSource::AllPositioningMethods0xffffffff가능한 경우 위성 기반 위치 파악 방법. 그렇지 않은 경우 비위성 기반 방법.

PositioningMethods 유형은 QFlags<PositioningMethod>에 대한 typedef입니다. 이 유형은 PositioningMethod 값들의 OR 조합을 저장합니다.

속성 설명서

[read-only] minimumUpdateInterval : int

이 속성은 위치 업데이트를 가져오는 데 필요한 최소 시간(밀리초 단위)을 나타냅니다.

이는 setUpdateInterval() 및 requestUpdate() 함수가 허용하는 최소값입니다.

액세스 함수:

virtual int minimumUpdateInterval() const = 0

[bindable] preferredPositioningMethods : PositioningMethods

참고: 이 속성은 ‘ QProperty ’ 바인딩을 지원합니다.

이 소스에 대해 선호하는 배치 방법을 설정합니다.

새 방법 중 소스에서 지원하지 않는 방법이 포함된 경우, 지원되지 않는 방법은 무시됩니다.

새로운 방법에 소스가 사용할 수 있거나 지원하는 방법이 하나도 포함되어 있지 않은 경우, 선호하는 방법은 소스가 사용할 수 있는 방법 집합으로 설정됩니다. 소스에 사용할 수 있는 방법이 없는 경우(예: 위치 서비스가 꺼져 있거나 위치 서비스를 제공하지 않는 경우), 전달된 방법이 있는 그대로 받아들여집니다.

이 속성의 기본값은 NoPositioningMethods 입니다.

참고: 하위 클래스 구현에서는 ` preferredPositioningMethods() `가 올바른 값을 반환하도록 보장하기 위해 ` setPreferredPositioningMethods() `의 기본 구현을 호출해야 합니다.

액세스 함수:

QGeoPositionInfoSource::PositioningMethods preferredPositioningMethods() const
virtual void setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods)

supportedPositioningMethods()도 참조하십시오 .

[read-only] sourceName : QString

이 속성은 사용 중인 위치 소스 구현체의 고유 이름을 저장합니다.

이는 특정 위치 소스 구현체의 새 인스턴스를 생성하기 위해 createSource()에 전달할 수 있는 이름과 동일합니다.

액세스 함수:

QString sourceName() const

[bindable] updateInterval : int

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 각 업데이트 사이의 요청된 간격을 밀리초 단위로 저장합니다.

업데이트 간격이 설정되지 않았거나(또는 0으로 설정된 경우) 소스는 필요한 만큼 자주 업데이트를 제공합니다.

업데이트 간격이 설정된 경우, 소스는 요청된 간격에 최대한 근접한 간격으로 업데이트를 제공합니다. 요청된 간격이 minimumUpdateInterval()보다 짧은 경우, 대신 최소 간격이 사용됩니다.

업데이트 간격의 변경은 가능한 한 빨리 반영되지만, 변경에 소요되는 시간은 구현에 따라 다를 수 있습니다. 이전 간격부터 경과한 시간이 새로운 간격의 일부로 계산되는지 여부는 구현에 따라 다릅니다.

이 속성의 기본값은 0입니다.

참고: 서브클래스 구현에서는 ` updateInterval() `가 올바른 값을 반환하도록 ` setUpdateInterval() `의 기본 구현을 호출해야 합니다.

참고: iOS 및 macOS에서는 해당 API가 이러한 기능을 제공하지 않으므로,이 속성을 사용하여 업데이트 빈도를 조정할 수 없습니다. 이러한 시스템에서 이 매개변수는 UpdateTimeoutError 를 설정하고, 원하는 간격 내에 업데이트가 수신되지 않을 경우 errorOccurred 신호를 트리거하는 용도로만 사용됩니다.

액세스 함수:

int updateInterval() const
virtual void setUpdateInterval(int msec)

멤버 함수 문서

[explicit] QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)

지정된 위치 소스( parent)를 생성합니다.

[virtual noexcept] QGeoPositionInfoSource::~QGeoPositionInfoSource()

위치 소스를 삭제합니다.

[static] QStringList QGeoPositionInfoSource::availableSources()

사용 가능한 소스 플러그인의 목록을 반환합니다. 여기에는 현재 플랫폼에 대한 모든 기본 백엔드 플러그인이 포함됩니다.

[virtual, since Qt 5.14] QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const

name 라는 백엔드별 속성이 존재할 경우, 해당 속성의 값을 반환합니다. 그렇지 않은 경우, 반환되는 값은 유효하지 않습니다. 지원되는 백엔드별 속성은 Qt Positioning plugins#Default plugins에 나열되어 있으며 설명되어 있습니다.

이 함수는 Qt 5.14에서 도입되었습니다.

setBackendProperty도 참조하십시오 .

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

지정된 위치 소스( parent )를 사용하여 시스템의 기본 위치 데이터 소스나 사용 가능한 우선순위가 가장 높은 플러그인에서 데이터를 읽어오는 위치 소스를 생성하여 반환합니다.

시스템에 기본 위치 소스가 없거나, 유효한 플러그인을 찾을 수 없거나, 사용자가 현재 위치에 접근할 권한이 없는 경우 ` nullptr `를 반환합니다.

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap &parameters, QObject *parent)

지정된 위치 소스( parent )를 사용하여 시스템의 기본 위치 데이터 소스나 사용 가능한 우선순위가 가장 높은 플러그인에서 데이터를 읽어오는 위치 소스를 생성하여 반환합니다.

시스템에 기본 위치 소스가 없거나, 유효한 플러그인을 찾을 수 없거나, 사용자가 현재 위치에 접근할 권한이 없는 경우 nullptr 를 반환합니다.

이 메서드는 소스를 구성하기 위해 ` parameters `를 팩토리에 전달합니다.

이 함수는 Qt 5.14에서 도입되었습니다.

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

sourceName 라는 플러그인을 불러와, 지정된 parent 을 가진 위치 소스를 생성하여 반환합니다.

플러그인을 찾을 수 없는 경우 nullptr 를 반환합니다.

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

sourceName 라는 플러그인을 불러와, 지정된 parent 를 가진 위치 소스를 생성하여 반환합니다.

플러그인을 찾을 수 없는 경우 nullptr 를 반환합니다.

이 메서드는 소스를 구성하기 위해 parameters 를 팩토리에 전달합니다.

이 함수는 Qt 5.14에서 도입되었습니다.

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

마지막으로 발생한 오류의 유형을 반환합니다.

참고: Qt6부터는 ` startUpdates()` 또는 ` requestUpdate()`을 호출할 때마다 마지막 오류 정보가 항상 초기화됩니다.

[signal] void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)

이 신호는 오류가 발생한 후에 전송됩니다. ‘ positioningError ’ 매개변수는 발생한 오류의 유형을 나타냅니다.

[pure virtual] QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const

알려진 최신 위치를 포함하는 업데이트를 반환하거나, 해당 위치가 없는 경우 null 업데이트를 반환합니다.

fromSatellitePositioningMethodsOnly 가 true인 경우, 위성 위치 측정 방법을 통해 수신된 마지막으로 알려진 위치를 반환하며, 해당 정보가 없는 경우에는 null 업데이트를 반환합니다.

[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)

startUpdates() 또는 requestUpdate()이 호출된 경우, 업데이트가 가능해지면 이 신호가 발생합니다.

update 의 값에는 새로운 업데이트의 값이 저장됩니다.

[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = 0)

현재 위치를 파악하고, 이 정보를 사용하여 ` positionUpdated()` 신호를 발생시키려고 시도합니다. 지정된 ` timeout `(밀리초 단위) 내에 현재 위치를 찾을 수 없거나, ` timeout `가 ` minimumUpdateInterval()`가 반환한 값보다 작을 경우, ` UpdateTimeoutError `를 포함한 ` errorOccurred()` 신호가 발생합니다.

타임아웃이 0인 경우, 타임아웃은 소스에 적합한 합리적인 기간으로 기본 설정됩니다.

다른 업데이트 요청이 진행 중일 경우 이 함수는 아무 작업도 수행하지 않습니다. 그러나 startUpdates()가 이미 호출되어 정기적인 업데이트가 진행 중일 때도 이 함수를 호출할 수 있습니다.

소스가 여러 위치 파악 방법을 사용하는 경우, 지정된 타임아웃 시간 내에 가장 정확한 위치 파악 방법을 통해 현재 위치를 파악하려고 시도합니다.

참고: Qt6부터는 이 메서드가 위치를 요청하기 전에 항상 마지막 오류를 NoError 으로 재설정합니다.

참고: Android 서비스에서 이 메서드를 사용하는 방법을이해하려면 Android의Qt Positioning 를 참조하십시오.

[virtual, since Qt 5.14] bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)

name 라는 백엔드별 속성을 value 로 설정합니다. 성공 시 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다. 백엔드별 속성을 사용하면 런타임에 위치 지정 하위 시스템의 동작을 구성할 수 있습니다. 지원되는 백엔드별 속성은 Qt Positioning plugins#Defaultplugins에 나열되어 있으며 설명되어 있습니다.

이 함수는 Qt 5.14에서 도입되었습니다.

backendProperty도 참조하십시오 .

[pure virtual slot] void QGeoPositionInfoSource::startUpdates()

setUpdateInterval()에서 지정한 대로 일정한 간격으로 업데이트를 전송하기 시작합니다.

setUpdateInterval()가 호출되지 않은 경우, 소스는 업데이트가 준비되는 즉시 이를 발행합니다.

이 QGeoPositionInfoSource 하위 클래스가 정기적인 업데이트를 제공할 수 없다고 판단하면, UpdateTimeoutError 를 가진 errorOccurred() 신호가 발송됩니다. 이는 위성 신호가 끊기거나 하드웨어 오류가 감지된 경우에 발생할 수 있습니다. 나중에 데이터를 다시 사용할 수 있게 되면 위치 업데이트가 재개됩니다. UpdateTimeoutError 오류는 주기적인 업데이트가 재개될 때까지 다시 발송되지 않습니다.

참고: Qt6부터는 이 메서드가 업데이트를 시작하기 전에 항상 마지막 오류를 NoError 로 재설정합니다.

참고: Android 서비스에서 이 메서드를 사용하는 방법을이해하려면 Android의Qt Positioning 를 참조하십시오.

iOS 8 버전부터 Core Location 프레임워크는 애플리케이션의 Info.plist에 NSLocationAlwaysUsageDescription 또는 NSLocationWhenInUseUsageDescription 키와 인증 프롬프트에 표시될 문자열을 추가하도록 요구합니다. NSLocationWhenInUseUsageDescription 키는 앱이 포그라운드 상태일 때 위치 서비스 사용 권한을 요청할 때 사용됩니다. NSLocationAlwaysUsageDescription 키는 앱이 실행 중일 때(전경 및 백그라운드 모두) 위치 서비스를 사용할 수 있는 권한을 요청할 때 사용됩니다. 두 항목이 모두 정의된 경우, 전경 모드에서는 NSLocationWhenInUseUsageDescription이 우선적으로 적용됩니다.

[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()

정기적인 간격으로 업데이트를 전송하지 않습니다.

[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const

이 소스에서 사용할 수 있는 위치 파악 방법을 반환합니다. 사용 가능 여부는 이 함수를 호출하는 시점에 사용 가능한 상태로 정의됩니다. 따라서 위치 서비스 끄기나 위성 기반 위치 제공자에 대한 제한과 같은 사용자 설정은 이 함수에 반영됩니다. 상태가 변경될 때의 런타임 알림은 ` supportedPositioningMethodsChanged()`를 통해 받을 수 있습니다.

모든 플랫폼이 서로 다른 위치 파악 방법을 구분하거나 기기의 현재 사용자 설정을 전달하는 것은 아닙니다. 다음 표는 현재 플랫폼 현황에 대한 개요를 제공합니다:

플랫폼간략한 설명
Android위치 서비스가 활성화된 경우 개별 제공자의 상태와 일반적인 위치 서비스 상태가 파악되어 전달됩니다.
GeoClue항상 ` AllPositioningMethods`를 반환하도록 하드코딩되어 있습니다.
GeoClue2개별 제공자를 구분할 수는 없으나, 비활성화된 위치 서비스가 반영됩니다.
iOS항상 AllPositioningMethods 를 반환하도록 하드코딩되어 있습니다.
macOS항상 xml-ph-0000@deepl.internal를 반환하도록 하드코딩되어 있습니다.항상 AllPositioningMethods 를 반환하도록 하드코딩되어 있습니다.
Windows (UWP)개별 제공자를 구별할 수는 없지만, 비활성화된 위치 서비스가 반영됩니다.

supportedPositioningMethodsChanged() 및 setPreferredPositioningMethods()도 참조하십시오 .

[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()

이 신호는 지원되는 위치 파악 방법이 변경되었을 때 발생합니다. 변경의 원인은 사용자가 위치 서비스를 켜거나 끄거나, 위치 서비스를 특정 유형(예: GPS 전용)으로 제한한 것일 수 있습니다. 지원되는 위치 파악 방법의 변경 사항을 모든 플랫폼에서 감지할 수 있는 것은 아니라는 점에 유의하십시오. ` supportedPositioningMethods()`는 현재 플랫폼의 지원 현황에 대한 개요를 제공합니다.

이 함수는 Qt 5.12에서 도입되었습니다.

© 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.