Qt Bluetooth — модуль фреймворка Qt, предоставляющий набор API для разработки приложений, взаимодействующих с устройствами по Bluetooth и Bluetooth Low Energy (BLE). Модуль реализует механизмы обнаружения устройств, установления соединений, обмена данными и управления службами и профилями, при этом интегрируется с остальными компонентами Qt и поддерживает как C++ так и QML интерфейсы. Qt Bluetooth ориентирован на кроссплатформенную разработку и абстрагирует особенности платформенных стеков Bluetooth, предоставляя унифицированный программный интерфейс.
Исторически функциональность Bluetooth в Qt развивалась по мере расширения самого фреймворка и появления BLE; различные версии Qt добавляли поддержку профилей и методов взаимодействия, а также улучшали переносимость между операционными системами. В разных платформах модуль опирается на нативные стековые реализации (например, BlueZ на Linux, Core Bluetooth на macOS/iOS, штатные API на Windows), поэтому конкретный набор поддерживаемых профилей и возможностей может зависеть от целевой ОС и её версии.
- Обнаружение устройств: сканирование классического Bluetooth и BLE, фильтрация по UUID сервисов и управление длительностью/режимом сканирования.
- Установление соединений: установление соединений с устройствами как на уровне сервисов BLE (GATT), так и на уровне классических соединений.
- GATT-клиент и GATT-сервер: чтение и запись характеристик, подписка на уведомления и индикации, публикация сервисов на стороне приложения.
- Профили и протоколы: поддержка типовых сценариев взаимодействия (например, SPP-эмуляция через последовательные каналы, обмен объектами), с учётом платформенных ограничений.
- C++ и QML API: классы для использования в C++ (например, для управления адаптером, устройствами и сервисами) и удобно интегрируемые элементы для QML-интерфейсов.
- Управление адаптером и состояниями: включение/отключение адаптера, получение информации о видимости, состоянии соединений и перечне сопряжённых устройств.
- Безопасность и сопряжение: механизмы сопряжения, аутентификации и шифрования, поддерживающие требования конкретных платформ и профилей.
- Событийная модель: сигнально-слотовая архитектура и уведомления об изменениях состояния, приходящих данных и ошибках, пригодные для реактивного программирования.
- Портабельность: единый интерфейс для различных ОС с возможностью использования нативных особенностей при необходимости.
- Ограничения платформ: заметная часть возможностей зависит от поддержки на целевой операционной системе и версии стека Bluetooth; некоторые профили могут быть недоступны или требовать дополнительных прав.