Qt 拾遗 003 disconnect

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 拾遗 003 disconnect相关的知识,希望对你有一定的参考价值。

参考技术A QObject 提供了如下静态方法:

disconnect 用于将对象发送方中的信号与对象接收方的信号槽连接方法断开。如果成功断开,则返回 true,否则返回 false。

当涉及的任何对象被销毁时,将删除信号插槽连接。

disconnect() 通常以三种方式使用,如下面的示例所示:

与之等效的非静态重载函数:

与之等效的非静态重载函数:

与之等效的非静态重载函数:

nullptr 可以用作通配符,分别表示“任何信号”、“任何接收对象”或“接收对象中的任何插槽”。

我们可以发现:上述调用中发送者始终不能为空。也就是说,我们无法在一次调用中断开来自多个对象的信号。

如果 signal 指针为空(被指定为 nullptr),则断开接收者方法与发生者对象的所有信号的连接。否则,只有指定的信号被断开连接。

如果 receiver 指针是空的(被指定为 nullptr),将会断开任何连接到信号的槽。否则,将只断开与 receiver 有关的连接。

如果 method 指针为 nullptr,则断开与接收者的全部连接。如果不是,那么只有名为 method 指定的槽将被断开连接,其他所有插槽将保持连接。如果 receiver 指针是被指定为 nullptr 时, method 也必须同时为 nullptr,也就是说我们不允许通过不指定 receiver 的方式来断开所有名为 method 的槽。

Qt disconnect From Service() 实际上没有断开蓝牙设备?

【中文标题】Qt disconnect From Service() 实际上没有断开蓝牙设备?【英文标题】:Qt disconnectFromService() not actaully disconnecting bluetooth device? 【发布时间】:2021-03-18 06:50:57 【问题描述】:

我正在使用 Qt 的 QBluetoothSocket 类将一对蓝牙耳机连接到我的 Windows 电脑,如下所示:

device->connectToService(QBluetoothAddress(device1Info[1]), QBluetoothUuid(QBluetoothUuid::SerialPort));

并断开我使用的耳机:

if (device->state() == QBluetoothSocket::ConnectedState) 
    device->disconnectFromService();

它们可以正常连接,但是当我选择断开它们时,它们实际上并没有断开。断开信号 发出,这意味着套接字确实断开了服务但是当我在 Windows 中检查我的设备时 设置耳机仍然注册为已连接并且行为如此。这可能是因为我使用的是QBluetoothUuid::SerialPort 作为连接到服务器时的QBluetoothUuid?还是别的什么?

【问题讨论】:

【参考方案1】:

断开连接不会断开设备,它只是断开套接字。就像您关闭了网络套接字一样 - 它不会断开您的 PC 与网络的连接 :)

我无法成功重现连接 - 除非您的耳机确实提供用于调试的串行端口服务或其他东西。

我的猜测是您的整个程序什么都不做,因为耳机不提供串行端口,而且操作系统通常会立即将音频设备连接到耳机的音频服务,因此您将无法连接到它.

我认为你想多了:你不需要在这里使用任何蓝牙 API。您只需要使用音频设备 API 来查找耳机并通过它们进行音频 I/O。不过,我不确定 Qt 是否会帮助您。在 Qt 的多媒体 API 中查找枚举音频设备的方法。否则,您将需要使用 OS API 调用或一些音频访问库。

【讨论】:

啊,我明白了,所以一旦通过插座连接耳机,就无法让 PC 断开耳机的连接?除了 SerialPort 之外,我还应该为耳机使用不同的 Uuid 吗? @aman 当然有一种方法可以断开设备 - 使用操作系统的 API。不过,它们在 Windows 上是一团糟。至于连接耳机:您必须列举它们提供的服务并从中选择一种。如果操作系统已将耳机作为音频设备连接,那么您的应用程序将无法接管连接。您需要先让操作系统断开音频设备。我认为您没有检查任何错误,并且您的代码可能根本没有做任何事情。我无法让它在这里工作 - 没有任何成功,正如预期的那样。 好吧,这是有道理的,谢谢您的有用回复!

以上是关于Qt 拾遗 003 disconnect的主要内容,如果未能解决你的问题,请参考以下文章

003-Qt&Vtk-读取jpgpngdicom等格式图片

libusb系列-003-Linux下libusb源码编译

基础拾遗------webservice详解

9str类型和byte类型转换列表拾遗元组拾遗字典拾遗

c#特性详解含常用过滤器实例

CTMediator源码拾遗