PySide6.QtCore.QSocketNotifier

class QSocketNotifier

QSocketNotifier 类提供了对文件描述符活动监控的支持。更多

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__(type[, parent=None])
Parameters:

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

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

__init__(arg__1, arg__2[, parent=None])
Parameters:
__init__(socket, type[, parent=None])
Parameters:

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

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

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

另请参阅

setEnabled() isEnabled()

activated(socket, activationEvent)
Parameters:

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

套接字标识符在socket参数中传递。

另请参阅

type() socket()

isEnabled()
Return type:

布尔

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

另请参阅

setEnabled()

isValid()
Return type:

布尔

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

另请参阅

setSocket()

setEnabled(enable)
Parameters:

enable – 布尔值

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

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

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

另请参阅

isEnabled() activated()

setSocket(socket)
Parameters:

socketqintptr

socket分配给此通知器。

注意

通知器将被禁用,这是一个副作用,需要重新启用。

socket()
Return type:

qintptr

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

type()
Return type:

类型

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

另请参阅

socket()