PySide6.QtDBus.QDBusServiceWatcher

class QDBusServiceWatcher

QDBusServiceWatcher 类允许用户监视总线服务的变化。更多

PySide6.QtDBus.QDBusServiceWatcher 的继承图

概要

属性

方法

信号

注意

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

详细描述

一个 QDBusServiceWatcher 对象可用于通知应用程序关于总线上的服务名称的所有权变更。它有三种监视模式:

  • 仅监视服务注册。

  • 仅监视服务注销。

  • 监视任何类型的服务所有权变更(默认模式)。

除了创建或删除,服务可能会在不进行注销/注册操作的情况下更改所有者。因此,如果发生这种情况,serviceRegistered()serviceUnregistered() 信号可能不会被发出。

这个类比使用QDBusConnectionInterface::serviceOwnerChanged()信号更高效,因为它允许只接收该类感兴趣的信号。

以字符‘*’结尾的服务名称将匹配指定命名空间内的所有服务名称。

例如,“com.example.backend1*”将匹配

  • com.example.backend1

  • com.example.backend1.foo

  • com.example.backend1.foo.bar

同一域中的子字符串将不会被匹配,即“com.example.backend12”。

另请参阅

QDBusConnection

class WatchModeFlag

(继承自 enum.Flag) QDBusServiceWatcher 支持三种不同的监视模式,这些模式通过此标志进行配置:

常量

描述

QDBusServiceWatcher.WatchForRegistration

仅监视服务注册,忽略与服务所有权变更相关的任何信号。

QDBusServiceWatcher.WatchForUnregistration

仅监视服务注销,忽略与服务所有权变更相关的任何信号。

QDBusServiceWatcher.WatchForOwnerChange

监视任何类型的服务所有权变更。

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property watchModeᅟ: Combination of QDBusServiceWatcher.WatchModeFlag

此属性保存此QDBusServiceWatcher对象的当前监视模式。

此属性的默认值为 QDBusServiceWatcher::WatchForOwnershipChange。

Access functions:
property watchedServicesᅟ: list of strings

此属性保存被监视的服务列表。

注意

使用setServicesWatched()修改此列表是一项昂贵的操作。如果可能,建议通过addWatchedService()removeWatchedService()来更改它。

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

创建一个QDBusServiceWatcher对象。请注意,在您使用setConnection()设置连接之前,此对象不会发出任何信号。

parent 参数传递给 QObject 以设置此对象的父对象。

__init__(service, connection[, watchMode=QDBusServiceWatcher.WatchModeFlag.WatchForOwnerChange[, parent=None]])
Parameters:

创建一个QDBusServiceWatcher对象并将其附加到connection连接。此外,此函数立即开始监视watchMode对服务service的更改。

parent 参数传递给 QObject 以设置此对象的父对象。

addWatchedService(newService)
Parameters:

newService – str

newService添加到此对象要监视的服务列表中。此函数比setWatchedServices()更高效,应尽可能使用它来添加服务。

移除任何现有的watchedServices绑定。

connection()
Return type:

QDBusConnection

返回此对象所附加的QDBusConnection

另请参阅

setConnection()

removeWatchedService(service)
Parameters:

服务 – str

Return type:

布尔

从该对象监视的服务列表中移除service。请注意,D-Bus通知是异步的,因此可能仍有关于service的信号待传递。这些信号仍将在处理D-Bus消息时发出。

移除任何现有的watchedServices绑定。

如果任何服务被移除,此函数返回 true

serviceOwnerChanged(service, oldOwner, newOwner)
Parameters:
  • service – str

  • oldOwner – str

  • newOwner – str

每当此对象检测到与serviceName服务相关的服务所有权变更时,就会发出此信号。oldOwner参数包含旧所有者名称,newOwner是新所有者。oldOwnernewOwner都是唯一的连接名称。

请注意,每当serviceName服务被注册或注销时,也会发出此信号。如果它被注册,oldOwner将包含一个空字符串,而如果它被注销,newOwner将包含一个空字符串。

如果您只需要确定服务是否已注册或未注册,而不需要通知所有权变更,请考虑使用这些操作的特定模式。如果您使用更具体的模式,这个类会更高效。

serviceRegistered(service)
Parameters:

服务 – str

每当此对象检测到服务 serviceName 在总线上可用时,就会发出此信号。

serviceUnregistered(service)
Parameters:

服务 – str

每当此对象检测到服务 serviceName 从总线上注销且不再可用时,就会发出此信号。

setConnection(connection)
Parameters:

连接QDBusConnection

设置此对象所连接的D-Bus连接为connection。所有监视的服务都将转移到这个连接。

请注意,QDBusConnection 对象是引用计数的:QDBusServiceWatcher 在存在时会保持对该连接的引用。直到引用计数降至零时,连接才会关闭,因此这将确保在此 QDBusServiceWatcher 对象存在期间接收到任何通知。

另请参阅

connection()

setWatchMode(mode)
Parameters:

modeWatchModeFlag 的组合

另请参阅

watchMode()

属性 watchModeᅟ 的设置器。

setWatchedServices(services)
Parameters:

services – 字符串列表

设置要监视的D-Bus服务列表为services

请注意,设置整个列表意味着删除所有以前的服务监视规则并添加新的规则。这是一个昂贵的操作,应尽可能避免。相反,如果可以的话,请使用addWatchedService()removeWatchedService()来操作列表中的条目。

移除任何现有的watchedServices绑定。

另请参阅

watchedServices()

属性 watchedServicesᅟ 的设置器。

watchMode()
Return type:

WatchModeFlag的组合

另请参阅

setWatchMode()

属性 watchModeᅟ 的获取器。

watchedServices()
Return type:

字符串列表

返回正在监视的D-Bus服务列表。

另请参阅

setWatchedServices()

属性 watchedServicesᅟ 的获取器。