이 페이지에서

변경 사항 Qt Positioning

Qt 6의 변경 사항은 프레임워크를 더 효율적이고 사용하기 쉽게 만들기 위한 의도적인 노력의 결과입니다.

저희는 각 릴리스에서 모든 공개 API에 대해 바이너리 및 소스 호환성을 유지하기 위해 노력하고 있습니다. 하지만 Qt를 더 나은 프레임워크로 만들기 위한 노력의 일환으로 일부 변경 사항은 불가피했습니다.

이 항목에서는 Qt Positioning 의 변경 사항을 요약하고, 이를 처리하기 위한 지침을 제공합니다.

공개 API의 호환성을 깨는 변경 사항

이 섹션에는 소스 호환성을 깨는 API 변경 사항에 대한 정보가 포함되어 있습니다.

QGeoPolygon::path() 이름 변경

QGeoPolygon::path() 및 QGeoPolygon::setPath() 메서드의 이름이 각각 QGeoPolygon::perimeter() 및 QGeoPolygon::setPerimeter()로 변경되었습니다. QML 측에서는 QGeoPolygon::perimeter 속성을 변경 없이 그대로 사용할 수 있습니다.

QGeoLocation 경계 영역에는 QGeoShape 를 사용하십시오

QGeoLocation 클래스와 이에 대응하는 QML의 Location 클래스는 경계 영역에 대해 QGeoRectangle 대신 QGeoShape 를 사용하도록 업데이트되었습니다.

C++

QGeoLocation::boundingBox() 와 QGeoLocation::setBoundingBox() 는 각각 QGeoLocation::boundingShape()과 QGeoLocation::setBoundingShape()으로 대체되었습니다. 이제 QGeoShape 객체가 기본 데이터 저장소로 사용됩니다.

QML

QGeoLocation::boundingBox 속성은 QGeoLocation::boundingShape 로 대체되었습니다. 이 속성은 QtPositioning 6.2부터 사용할 수 있으므로, QML 파일의 임포트 버전을 반드시 업데이트하십시오.

import QtPositioning 6.2

QGeoShape::extendShape() 제거

QGeoShape::extendShape() 메서드는 Qt 5.9에서 사용 중단되었으며, Qt 6에서 최종적으로 제거되었습니다. 해당 클래스에서 이 기능이 필요한 경우 QGeoRectangle::extendRectangle() 및 QGeoCircle::extendCircle()를 사용하십시오.

signal error를 errorOccurred로 이름 변경

Qt 5에서는 여러 Qt Positioning 클래스에 error() 시그널이 있었는데, 이는 error() 메서드와 충돌을 일으켰습니다. Qt 6에서는 이러한 시그널의 이름을 errorOccurred() 로 변경했습니다. 구체적으로:

업데이트 타임아웃 신호 제거

Qt 5에서는 지정된 타임아웃 내에 현재 위치나 위성 정보를 가져올 수 없는 경우를 알리기 위해 QGeoPositionInfoSource::updateTimeout() 및 QGeoSatelliteInfoSource::requestTimeout() 신호가 사용되었습니다. 이러한 신호들은 Qt 6에서 제거되었습니다. 대신 새로운 오류 유형을 사용하는 errorOccurred() 신호가 사용됩니다. 구체적으로:

PositionSource QML 객체에도 동일한 변경 사항이 적용됩니다. PositionSource::updateTimeout() 신호는 제거되었습니다. 대신 PositionSource.UpdateTimeoutError 을 가진 PositionSource::sourceError 속성이 사용됩니다.

NMEA 지원 재설계

Qt 5에서는 serialnmea 위치 파악 플러그인과 PositionSource 객체의 nmeaSource 속성이 있었습니다.

이 플러그인은 시리얼 포트를 통해 NMEA 스트림에 대한 액세스를 제공한 반면, QML 객체는 TCP 소켓이나 로컬 파일에서 NMEA 스트림을 읽는 역할을 담당했습니다.

Qt 6에서는 이러한 모든 기능을 플러그인에 통합했으며, 플러그인 이름은 nmea로 변경되었습니다. 이제 이 플러그인은 시리얼 포트, TCP 소켓, 로컬 파일의 세 가지 NMEA 데이터 소스 모두를 처리할 수 있습니다. 자세한 내용은 플러그인 설명을 참조하십시오.

PositionSource 객체의 ` nmeaSource ` 속성은 이제 제거되었습니다.

기타 API 변경 사항

이 섹션에는 소스 호환성을 깨지 않는 API 개선 사항이 포함되어 있습니다. 그러나 이러한 변경 사항이 애플리케이션 로직에 영향을 미칠 수 있으므로, 이에 대해 알아두는 것이 여전히 유용합니다.

오류를 올바르게 재설정

Qt 5에서는 QGeoAreaMonitorSource, QGeoPositionInfoSource 및 QGeoSatelliteInfoSource 클래스의 오류가 절대 재설정되지 않았습니다. 이러한 클래스나 그 하위 클래스에서 startUpdates(), startMonitoring() 또는 requestUpdates() 를 호출하는 것은 사실상 새로운 작업 세션을 시작하는 것을 의미하므로, 이전 오류는 고려할 필요가 없다는 점에서 이러한 동작은 논리적이지 않았습니다. Qt 6부터는 앞서 언급한 메서드 중 하나가 호출되면 오류를 NoError 로 재설정합니다.

추가 QGeoAddress::streetNumber

QGeoAddress 클래스에 streetNumber 속성이 추가되었습니다. 이 속성은 도로 번호, 건물 이름 또는 주소를 서로 구별하는 데 사용될 수 있는 기타 정보를 저장합니다. C++ 코드에서 이 속성에 접근하려면 streetNumber() 및 setStreetNumber()을 사용하십시오.

QGeoAddress::street 는 이제 도로 이름만 포함합니다.

Address 의 QML 대응 항목에도 동일한 변경 사항이 적용됩니다. 이제 Address::street 속성은 도로 이름에만 사용되며, Address::streetNumber 속성은 기타 중요한 주소 세부 정보에 사용됩니다.

다음에 타임아웃 인수를 추가하십시오. PositionSource::update()

timeout 는 밀리초 단위로 지정됩니다. timeout 가 0(기본값)인 경우, 소스에 적합한 적절한 타임아웃 기간으로 기본 설정됩니다.

QGeoSatelliteInfo, QGeoPositionInfo 및 QGeoAreaMonitorInfo 클래스 리팩토링

이 클래스들은 이제 구현 과정에서 ` QExplicitlySharedDataPointer `를 사용합니다. 이는 해당 클래스들이 '쓰기 시 복사(copy-on-write)' 방식을 구현함을 의미합니다. 이로 인해 복사 비용이 낮아져 값으로 전달할 수 있게 되었습니다.

또 다른 개선 사항으로는 효율적인 이동(move) 연산에 대한 지원이 추가된 점입니다.

Qt Positioning 플러그인 구현의 변경 사항

이 섹션에서는 플러그인 인터페이스의 변경 사항에 대한 정보를 제공합니다.

Qt 5에서는 두 가지 버전의 플러그인 인터페이스가 있었습니다:

  • QGeoPositionInfoSourceFactory 기본 기능을 제공하는 버전.
  • QGeoPositionInfoSourceFactoryV2 생성된 객체에 사용자 정의 매개변수를 제공할 수 있도록 기본 클래스를 확장한 버전입니다.

Qt 6에서는 이 두 가지 구현 방식을 하나로 통합하여 QGeoPositionInfoSourceFactory 클래스만 남겼습니다. 이제 이 클래스의 메서드를 통해 사용자 정의 매개변수를 전달할 수 있습니다.

참고: 주요 버전 업데이트를 반영하여 인터페이스 식별자가 업데이트되었습니다. Qt Positioning 플러그인에서는 "org.qt-project.qt.position.sourcefactory/6.0" 를 사용하십시오.

다음은 플러그인 클래스 선언의 예시입니다:

class MyPlugin : public QObject, public QGeoPositionInfoSourceFactory
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0"
                      FILE "plugin.json")
    Q_INTERFACES(QGeoPositionInfoSourceFactory)

public:
    QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap &parameters) override;
    QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap &parameters) override;
    QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap &parameters) override;
};

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