Qt Bluetooth

블루투스 API는 블루투스 지원 디바이스 간의 연결을 제공합니다.

현재 이 API는 다음 플랫폼에서 지원됩니다:

API 기능AndroidiOSLinux(BlueZ 5.x)macOSWindows
클래식 블루투스xxxx
블루투스 LE 센트럴xxxxx
블루투스 LE 주변기기xxxx

개요

블루투스는 단거리(100미터 미만) 무선 기술입니다. 데이터 전송 속도는 2.1Mbps로, 장치 간 데이터 전송에 이상적입니다. Bluetooth 연결은 장치 검색, 장치에 대한 정보 수집, 장치 간 데이터 교환과 같은 기본적인 장치 관리를 기반으로 합니다.

Qt Bluetooth 클라이언트/중앙 역할 사용 사례를 위한 블루투스 저에너지 개발을 지원합니다. 자세한 내용은 블루투스 저에너지 개요 섹션에서 확인할 수 있습니다.

모듈 사용

Qt 모듈의 C++ API를 사용하려면 직접 또는 다른 종속성을 통해 모듈 라이브러리에 연결해야 합니다. CMakeqmake를 비롯한 여러 빌드 도구가 이를 지원합니다.

CMake로 빌드하기

find_package() 명령을 사용하여 Qt6 패키지에서 필요한 모듈 컴포넌트를 찾습니다:

find_package(Qt6 REQUIRED COMPONENTS Bluetooth)
target_link_libraries(mytarget PRIVATE Qt6::Bluetooth)

자세한 내용은 CMake로 빌드 개요를 참조하세요.

qmake로 빌드하기

qmake로 빌드하도록 모듈을 구성하려면 프로젝트의 .pro 파일에 QT 변수의 값으로 모듈을 추가합니다:

QT += bluetooth

권한

Qt 6.6부터 Qt Bluetooth 모듈은 새로운 QPermission API를 사용하여 Bluetooth 권한을 처리합니다. 즉, Qt 자체에서 더 이상 이러한 권한을 쿼리하지 않으므로 클라이언트 애플리케이션에서 직접 수행해야 합니다.

새로운 QPermission API를 애플리케이션에 통합하는 방법에 대한 예는 애플리케이션 권한 페이지를 참조하십시오.

빌딩 Qt Bluetooth

모듈은 모든 Qt 플랫폼용으로 빌드할 수 있지만 모든 플랫폼에 포팅되지는 않습니다. 지원되지 않는 플랫폼은 해당 플랫폼이 지원되지 않을 때 자동으로 선택되는 더미 백엔드를 사용합니다. 더미 백엔드는 적절한 오류 메시지와 값을 보고하므로 런타임에 현재 플랫폼이 지원되지 않는다는 것을 감지할 수 있습니다. 더미 백엔드는 빌드 중에 BlueZ 개발 헤더를 찾지 못했거나 Qt가 Qt D-Bus 지원 없이 빌드된 경우에도 Linux에서 선택됩니다.

더미 백엔드의 사용은 빌드 및 실행 중에 적절한 경고를 통해 강조 표시됩니다.

리눅스 관련

Qt 6.5부터 Linux 주변 장치 지원에는 두 가지 백엔드 대안이 있습니다: BlueZ DBus와 블루투스 커널 API. DBus 백엔드는 Qt 6.7부터 기본 백엔드입니다.

BlueZ DBus는 최신 BlueZ 스택이며 구형 커널 API의 최종 후속 제품일 가능성이 높습니다. 기능 면에서 조금 더 제한적이지만 일반적인 사용에서는 문제가 되지 않습니다. DBus 백엔드 사용의 한 가지 주목할 만한 이점은 사용자 프로세스에 더 이상 CAP_NET_ADMIN 기능이 필요하지 않다는 것입니다(예: root 사용자로 실행).

DBus 백엔드를 사용하려면 BlueZ 버전 5.56 이상이 필요하며, 필요한 DBus API를 제공해야 합니다. 이러한 요구 사항이 충족되지 않으면 Qt는 자동으로 Bluetooth 커널 API 백엔드로 돌아갑니다.

이전 커널 백엔드는 QT_BLUETOOTH_USE_KERNEL_PERIPHERAL 환경 변수를 설정하여 수동으로 선택할 수도 있습니다.

macOS 관련

macOS의 Bluetooth API에는 특정 유형의 이벤트 디스패처가 필요한데, Qt에서는 QGuiApplication 에 대한 종속성을 유발합니다. 그러나 환경 변수 QT_EVENT_DISPATCHER_CORE_FOUNDATION=1 를 설정하여 이 문제를 우회할 수 있습니다.

클래식 블루투스를 사용하지 않는 어플리케이션은 CoreBluetooth(블루투스 LE)가 QApplication 또는 QGuiApplication 를 필요로 하지 않으므로 QtBluetooth 의 하위 집합을 사용할 수 있습니다.

문서 및 가이드

참조

로깅 카테고리

QtBluetooth 모듈은 다음 logging categories 을 내보냅니다:

로깅 카테고리설명
Qt.Bluetooth크로스 플랫폼 코드 경로의 로깅을 활성화합니다. QtBluetooth
qt.bluetooth.android안드로이드 구현의 로깅을 활성화합니다.
qt.bluetooth.bluez블루즈/리눅스 구현의 로깅을 활성화합니다.
qt.bluetooth.iOSiOS 구현의 로깅을 활성화합니다
qt.bluetooth.osxmacOS 구현의 로깅을 활성화합니다
qt.bluetooth.windows윈도우 구현의 로깅을 활성화합니다.

로깅 카테고리는 QtBluetooth 에 대한 추가 경고 및 디버그 출력을 활성화합니다. 로깅에 대한 자세한 정보는 QLoggingCategory 에서 확인할 수 있습니다. 모든 QtBluetooth 로깅을 활성화하는 빠른 방법은 main() 함수에 다음 줄을 추가하는 것입니다:

QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true"));

예제

모듈 진화

Qt Bluetooth 의 변경 사항에는 Qt 6 시리즈에 적용된 모듈 API와 기능의 중요한 변경 사항이 나열되어 있습니다.

라이선스 및 속성

Qt BluetoothThe Qt Company의 상용 라이선스에 따라 제공됩니다. 또한 GNU 약소 일반 공중 사용 허가서 버전 3 또는 GNU 일반 공중 사용 허가서 버전 2에 따라 사용할 수 있습니다. 자세한 내용은 Qt 라이선스를 참조하십시오.

Linux에서는 Qt Bluetooth 에서 별도의 실행 파일( sdpscanner)을 사용하여 공식 Linux 블루투스 프로토콜 스택인 BlueZ와 통합합니다. BlueZ는 GNU 일반 공중 사용 허가서 버전 2에 따라 제공됩니다.

BlueZ

GNU 일반 공중 라이선스 v2.0만 사용 가능(사용자 코드가 GPL로 강제 적용되지는 않습니다. 자세한 내용은 자세한 내용을 참조하세요.)

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