class QSocketNotifier#

QSocketNotifier 类提供了监视文件描述符上活动的支持。 更多信息

Inheritance diagram of PySide6.QtCore.QSocketNotifier

概要#

方法#

#

信号#

注意:

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段进行翻译的贡献。如果您发现翻译中存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建票据来告知我们。

详细说明#

QSocketNotifier允许将Qt的事件循环与其他基于文件描述符的事件循环集成。文件描述符动作在Qt的顶级事件循环(exec())中被检测。

一旦您使用对应平台底层的API(通常是特定平台的)打开设备,您可以创建一个套接字通知器来监视文件描述符。如果将描述符传递给构造函数,则套接字通知器默认启用,即每当发生与其类型相对应的套接字事件时,都会发射activated()信号。将activated()信号连接到当发生与您的套接字通知器类型相对应的事件时将被调用的槽。

您也可以创建不带描述符的套接字通知器。在这种情况下,应在获取到描述符后调用setSocket()函数。

套接字通知器有三种类型:读取、写入和异常。类型由Type枚举描述,必须在构建套接字通知器时指定。构建后,可以通过type()函数确定。请注意,如果您需要监视同一文件描述符的读取和写入,您必须创建两个套接字通知器。另外,您无法在同一套接字上安装相同类型的两个套接字通知器(ReadWriteException)。

setEnabled()函数允许您开启或禁用套接字通知器。通常建议明确开启或禁用套接字通知器,特别是对于写入通知器。禁用的通知器会忽略套接字事件(与未创建套接字通知器相同)。使用isEnabled()函数来确定通知器的当前状态。

最后,您可以使用socket()函数来检索套接字标识符。虽然类名为QSocketNotifier,但它通常用于除了套接字以外的其他类型设备。QTcpSocket和QUdpSocket通过信号提供通知,因此通常不需要在这些上使用QSocketNotifier

参见

QFile QProcess QTcpSocketQUdpSocket

class Type#

此枚举描述了套接字通知可以识别的各种事件类型。构造套接字通知时必须指定类型。

请注意,如果您需要监视同一文件描述符的读取和写入,您必须创建两个套接字通知。此外,无法在同一套接字上安装两个相同类型的套接字通知(读取、写入、异常)。

常量

描述

QSocketNotifier.Read

有读取数据。

QSocketNotifier.Write

可以写入数据。

QSocketNotifier.Exception

发生了异常。我们反对使用这种方法。

参见

QSocketNotifier() type()

__init__(arg__1, arg__2[, parent=None])#
参数:
__init__(arg__1[, parent=None])
参数:

使用给定的type构造一个没有分配描述符的套接字通知。此parent参数传递给QObject构造函数。

调用 setSocket() 函数来设置要监视的描述符。

__init__(socket, arg__2[, parent=None])
参数:
  • socketqintptr

  • arg__2Type

  • parentQObject

使用给定的 parent 构造一个套接字通知器。它将启用套接字,并监视给定 type 的事件。

通常建议显式启用或禁用套接字通知器,尤其是对于写入通知器。

对 Windows 用户注:传递给 QSocketNotifier 的套接字将变为非阻塞,即使它最初作为阻塞套接字创建。

activated(socket, activationEvent)#
参数:

每当套接字通知器被启用并且发生与其 type 对应的套接字事件时,就会发出此信号。

套接字标识符通过 socket 参数传递。

参见

type() socket()

isEnabled()#
返回类型:

bool

如果通知器被启用,则返回 true;否则返回 false

参见

setEnabled()

isValid()#
返回类型:

bool

如果通知器有效(即,已分配描述符),则返回 true;否则返回 false

参见

setSocket()

setEnabled(arg__1)#
参数:

arg__1 – bool

如果 enable 为 true,则启用通知器;否则禁用通知器。

当通知器被启用时,每当与其 type 对应的套接字事件发生时,它都会发出 activated() 信号。当它被禁用时,它会忽略套接字事件(与未创建套接字通知器的效果相同)。

应在 activated() 信号发出后立即禁用写入型通知器

setSocket(socket)#
参数:

socketqintptr

socket 分配给该通知器。

注意:

通知器将作为副作用被禁用,需要重新启用。

socket()#
返回类型:

qintptr

返回分配给此对象的套接字标识符。

type()#
返回类型:

Type

返回构造函数中指定的套接字事件类型。

参见

socket()