Qt Bluetooth
La API Bluetooth proporciona conectividad entre dispositivos habilitados para Bluetooth.
Actualmente, la API es compatible con las siguientes plataformas:
| Función de la API | Android | iOS | Linux (BlueZ 5.x) | macOS | Windows |
|---|---|---|---|---|---|
| Bluetooth clásico | x | x | x | x | |
| Bluetooth LE Central | x | x | x | x | x |
| Periférico Bluetooth LE | x | x | x | x |
Información general
Bluetooth es una tecnología inalámbrica de corto alcance (menos de 100 metros). Tiene una velocidad de transferencia de datos de 2,1 Mbps, lo que la hace ideal para transferir datos entre dispositivos. La conectividad Bluetooth se basa en la gestión básica de dispositivos, como la búsqueda de dispositivos, la recopilación de información sobre ellos y el intercambio de datos entre ellos.
Qt Bluetooth admite el desarrollo de Bluetooth Low Energy para casos de uso cliente/función central. Encontrará más información en la sección Descripción general de Bluetooth Low Energy.
Uso del módulo
Para utilizar la API C++ de un módulo Qt es necesario enlazar con la biblioteca del módulo, ya sea directamente o a través de otras dependencias. Varias herramientas de compilación tienen soporte dedicado para esto, incluyendo CMake y qmake.
Construcción con CMake
Utilice el comando find_package() para localizar el componente del módulo necesario en el paquete Qt6:
find_package(Qt6 REQUIRED COMPONENTS Bluetooth)
target_link_libraries(mytarget PRIVATE Qt6::Bluetooth)Para obtener más información, consulta la descripción general de la compilación con CMake.
Compilación con qmake
Para configurar el módulo para la construcción con qmake, agregue el módulo como valor de la variable QT en el archivo .pro del proyecto:
QT += bluetooth
Permisos
A partir de Qt 6.6, el módulo Qt Bluetooth utiliza la nueva API QPermission para gestionar los permisos de Bluetooth. Esto significa que Qt ya no consulta estos permisos, por lo que debe hacerse directamente desde la aplicación cliente.
Consulte la página Permisos de la aplicación para ver un ejemplo de cómo integrar la nueva API QPermission en la aplicación.
Información relacionada
Creación de Qt Bluetooth
Aunque el módulo puede ser construido para todas las plataformas Qt, el módulo no es portado a todas ellas. Las plataformas no soportadas emplean un backend ficticio que se selecciona automáticamente cuando la plataforma no está soportada. El backend ficticio informa de los mensajes y valores de error apropiados, lo que permite detectar en tiempo de ejecución que la plataforma actual no es compatible. El backend ficticio también se selecciona en Linux si no se encuentran las cabeceras de desarrollo BlueZ durante el tiempo de compilación o si Qt se compiló sin soporte para Qt D-Bus.
El uso del backend ficticio se resalta mediante una advertencia apropiada durante la compilación y la ejecución.
Específico para Linux
Desde Qt 6.5 el soporte de periféricos Linux tiene dos alternativas de backend: BlueZ DBus y Bluetooth Kernel API. El backend DBus es el backend por defecto desde Qt 6.7.
BlueZ DBus es el nuevo stack de BlueZ y posiblemente el sucesor del antiguo Kernel API. Es un poco más limitado en términos de características, pero en un uso típico esto no debería importar. Un beneficio notable de usar el backend DBus es que el proceso de usuario ya no necesita tener la capacidad CAP_NET_ADMIN (por ejemplo ejecutándose como usuario root ).
El backend DBus requiere BlueZ versión 5.56 o superior, y que proporcione las API DBus necesarias. Si no se cumplen estos requisitos, Qt vuelve automáticamente al backend Bluetooth Kernel API.
El kernel backend más antiguo también puede seleccionarse manualmente configurando la variable de entorno QT_BLUETOOTH_USE_KERNEL_PERIPHERAL.
Específico para macOS
La API Bluetooth en macOS requiere un cierto tipo de despachador de eventos que en Qt causa una dependencia a QGuiApplication. Sin embargo, se puede establecer la variable de entorno QT_EVENT_DISPATCHER_CORE_FOUNDATION=1 para eludir este problema.
Las aplicaciones que no utilicen Bluetooth clásico encontrarán disponible un subconjunto de QtBluetooth, ya que CoreBluetooth (Bluetooth LE) no requiere QApplication o QGuiApplication.
Artículos y guías
Referencia
Categorías de registro
El módulo QtBluetooth exporta las siguientes logging categories:
| Categoría de registro | Descripción |
|---|---|
| qt.bluetooth | Permite el registro de la ruta de código entre plataformas en QtBluetooth |
| qt.bluetooth.android | Permite el registro de la implementación de Android |
| qt.bluetooth.bluez | Permite el registro de la implementación BLuez/Linux |
| qt.bluetooth.ios | Permite el registro de la implementación de iOS |
| qt.bluetooth.osx | Permite el registro de la implementación de macOS |
| qt.bluetooth.windows | Activa el registro de la implementación de Windows |
Las categorías de registro habilitan advertencias y depuración adicionales para QtBluetooth. Encontrará información más detallada sobre el registro en QLoggingCategory. Una forma rápida de activar todos los registros de QtBluetooth es añadir la siguiente línea a la función main():
QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true"));
Ejemplos
- QML
- C++
Evolución de Módulos
Cambios en Qt Bluetooth enumera los cambios importantes en la API del módulo y la funcionalidad que se hicieron para la serie Qt 6 de Qt.
Licencias y Atribuciones
Qt Bluetooth está disponible bajo licencias comerciales de The Qt Company. Además, está disponible bajo la Licencia Pública General Reducida de GNU, versión 3, o la Licencia Pública General de GNU, versión 2. Consulte Licencias de Qt para obtener más información.
En Linux, Qt Bluetooth utiliza un ejecutable independiente, sdpscanner, para integrarse con la pila de protocolos bluetooth BlueZ oficial de Linux. BlueZ está disponible bajo la Licencia Pública General de GNU, versión 2.
GNU General Public License v2.0 only (Esto no obliga al código de usuario a ser GPL'ed. Para más información ver detalles). |
© 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.