QProcess を使用して、利用可能な Bluetooth デバイスをスキャンしています。QProcess は、hcitool scan などのコマンド ライン コマンドを使用して、利用可能なデバイスをチェックします。出力は正規表現を使用して解析され、デバイス名、OPUSH のチャネル、デバイスのタイプ、デバイス アドレスなどの詳細を含むデータ構造のセル (スキャンされたデバイスの数に等しい) があります。
QListWidget を使用するすべてのデバイスを表示するには
//Display on list widget
//Send all information regarding device name, address, OPUSH channel and icon
//to child widget myBTwidget
myBTwidget *MyItem = new myBTwidget();
MyItem->BTName(DeviceName);
MyItem->BTAddress(address);
MyItem->BTChannelNo(channel);
MyItem->BTIcon(icon);
QListWidgetItem *item=new QListWidgetItem();
item->setSizeHint(QSize(720,50));
this->ui->listWidget->addItem(item);
//Add child widget myBTwidget to list widget
this->ui->listWidget->setItemWidget(item,MyItem);
カスタム子ウィジェットには、1. デバイスのタイプの画像を示すラベルがあります 2. デバイス名を表示するボタン (フラット) 3. ファイルを送信する OPUSH チャネルが使用可能かどうかを示すラベル
listwidgetitem プッシュボタンをクリックすると、Bluetooth デバイスとペアリングされ、ファイルが送信されます。QListwidgetitem clicked() シグナルを、デバイス名 clicked() スロットを含む childwidget プッシュボタンに接続したいと思います。このようにして、ユーザーはアイテムのどこでも押すことができ、デバイスはペアリングしてファイルを送信します。
どうすればいいですか?
リストウィジェットは親クラスにあり、アイテムは子ウィジェットです。qlistwidgetitem の clicked シグナルをスロット onitemclicked() に接続してみました。onitemclicked() 関数で、プッシュボタンのクリック関数を実装するカスタム childwidget 内の関数を呼び出そうとしましたが、デバイス名、アドレス、チャネルなどの詳細がないため、操作を実行できません。
デバイス名としてテキストを含む子ウィジェットのプッシュボタンをクリックするだけで、すべての詳細が表示され、ペアリングと送信操作が実行されます。
私はいくつかの解決策を考えました.1.グローバル構造を作成し、その中にデータを保存してORを利用します.2.データベースにテーブルを作成し、子ウィジェットのロードを解析しながらデータを保存し、このデータを使用して関数を呼び出してファイルを送信します
知りたいのですが、もっと良い方法はありますか?個々の listwidgetitem の詳細を何らかの方法でカスタム子ウィジェットに保存し、アイテムをクリックしたときに送信できる場合は、すべての詳細を取得し、関数を呼び出してペアリングを行い、ファイルを送信しますか??
どうか私を助けてください。
ありがとうございました