このページについて

Qt Bluetooth

Bluetooth APIは、Bluetooth対応デバイス間の接続機能を提供します。

現在、このAPIは以下のプラットフォームでサポートされています:

APIの機能AndroidiOSLinux (BlueZ 5.x)macOSWindows
従来のBluetoothxxxx
Bluetooth LE セントラルxxxxx
Bluetooth LE 周辺機器xxxx

概要

Bluetoothは、短距離(100メートル未満)の無線技術です。データ転送速度は2.1 Mbpsであり、デバイス間のデータ転送に最適です。Bluetooth接続は、デバイスのスキャン、デバイス情報の収集、デバイス間のデータ交換といった基本的なデバイス管理に基づいています。

Qt Bluetooth クライアント/セントラル・ロールのユースケースに向けたBluetooth Low Energy開発をサポートしています。詳細については、「Bluetooth Low Energyの概要」セクションを参照してください。

モジュールの使用

QtモジュールのC++ APIを使用するには、モジュールライブラリに対して、直接または他の依存関係を通じてリンクを行う必要があります。CMakeやqmakeなど、いくつかのビルドツールではこれに対する専用のサポートが用意されています。

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 モジュールは、Bluetooth の権限を処理するために新しいQPermission APIを使用します。これは、Qt自体がこれらの権限を照会しなくなったことを意味するため、クライアントアプリケーション側から直接行う必要があります。

新しいQPermission APIをアプリケーションに組み込む方法の例については、「アプリケーションの権限」のページを参照してください。

ビルドQt Bluetooth

このモジュールはすべての Qt プラットフォーム向けにビルド可能ですが、すべてのプラットフォームに移植されているわけではありません。サポートされていないプラットフォームでは、ダミーバックエンドが使用されます。これは、プラットフォームがサポートされていない場合に自動的に選択されます。ダミーバックエンドは適切なエラーメッセージと値を報告するため、実行時に現在のプラットフォームがサポートされていないことを検知できます。 また、ビルド時に BlueZ 開発用ヘッダーが見つからない場合や、Qt がQt D-Bus サポートなしでビルドされた場合にも、Linux ではダミーバックエンドが選択されます。

ダミーバックエンドの使用は、ビルド時および実行時に適切な警告が表示されることで強調されます。

Linux固有

Qt 6.5以降、Linuxの周辺機器サポートには、BlueZ DBusとBluetoothカーネルAPIという2つのバックエンドの選択肢があります。Qt 6.7以降、DBusバックエンドがデフォルトのバックエンドとなっています。

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 Bluetooth ではこれが `QGuiApplication` への依存関係を引き起こします。ただし、環境変数 `QT_EVENT_DISPATCHER_CORE_FOUNDATION=1 ` を設定することで、この問題を回避できます。

Classic Bluetoothを使用しないアプリケーションでは、CoreBluetooth(Bluetooth LE)はQApplication やQGuiApplication を必要としないため、QtBluetooth のサブセットが利用可能です。

記事とガイド

リファレンス

ロギングカテゴリ

QtBluetooth モジュールは、以下のlogging categories をエクスポートします:

ロギングカテゴリ説明
Qt Bluetooth`qt.bluetooth` 内のクロスプラットフォームコードパスのロギングを有効にします。QtBluetooth
qt.bluetooth.androidAndroid実装のログ記録を有効にします
qt.bluetooth.bluezBLuez/Linux 実装のログ出力を有効にします
qt.bluetooth.iosiOS実装のログ出力を有効にします
qt.bluetooth.osxmacOS実装のログ出力を有効にします
qt.bluetooth.windowsWindows実装のログ出力を有効にします

ロギングカテゴリを使用すると、QtBluetooth の警告およびデバッグ出力を追加できます。ロギングに関する詳細情報は、QLoggingCategory に記載されています。QtBluetooth のすべてのロギングを有効にする簡単な方法は、main() 関数に次の行を追加することです:

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

例

モジュールの進化

「Qt Bluetooth 」では、Qt 6シリーズ向けに実施された、モジュールのAPIおよび機能に関する重要な変更点をまとめています。

ライセンスおよび帰属表示

Qt Bluetooth は、The Qt Company から商用ライセンスの下で提供されています。さらに、GNU Lesser General Public License バージョン 3 またはGNU General Public License バージョン 2 の下でも利用可能です。詳細については、「Qt ライセンス」を参照してください。

Linux では、Qt Bluetooth は、公式の Linux Bluetooth プロトコルスタックである BlueZ と統合するために、別個の実行ファイルsdpscanner を使用します。BlueZ は、GNU General Public License バージョン 2 の下で提供されています。

BlueZ

GNU General Public License v2.0のみ(これにより、ユーザーコードがGPLの対象となるわけではありません。詳細については、詳細情報をご覧ください。)

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