我正在使用 QProcess 扫描可用的蓝牙设备。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 按钮,它将与蓝牙设备配对并发送文件。我想将 QListwidgetitem clicked() 信号连接到包含设备名称 clicked() 插槽的子控件按钮。通过这种方式,用户可以按项目上的任何位置,设备配对并发送文件。
我该怎么做?
listwidget 在父类中,item 是子widget。我尝试将 qlistwidgetitem 的点击信号连接到插槽 onitemclicked()。在 onitemclicked() 函数中,我尝试在自定义 childwidget 中调用实现按钮单击功能的函数,但由于它没有设备名称、地址、通道等详细信息,因此无法执行操作。
如果我只需单击包含文本作为设备名称的子小部件按钮,它就会包含所有详细信息,并将执行配对和发送操作。
我想到了几个解决方案,1.创建一个全局结构并将数据保存在其中并利用OR 2.在数据库中创建一个表并在解析加载子小部件时保存数据并使用该数据调用函数发送文件
我想知道有没有更好的方法来解决它?如果我可以将单独的 listwidgetitem 详细信息发送到以某种方式存储的自定义子小部件并单击该项目,请获取所有详细信息并调用该函数来进行配对和发送文件?
请帮帮我。
谢谢