QDBusServiceWatcher 类

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

头部 #include <QDBusServiceWatcher>
CMakefind_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmakeQT += dbus
继承 QObject

公开类型

flagsWatchMode
枚举WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange }

属性

公开函数

QDBusServiceWatcher(QObject *parent = nullptr)
QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)
虚拟~QDBusServiceWatcher()
voidaddWatchedService(const QString &newService)
QBindable<QDBusServiceWatcher::WatchMode>bindableWatchMode()
QBindable<QStringList>bindableWatchedServices()
QDBusConnectionconnection() const
boolremoveWatchedService(const QString &service)
voidsetConnection(const QDBusConnection &connection)
voidsetWatchMode(QDBusServiceWatcher::WatchMode mode)
voidsetWatchedServices(const QStringList &services)
QDBusServiceWatcher::WatchModewatchMode() const
QStringListwatchedServices() const

信号

voidserviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)
voidserviceRegistered(const QString &serviceName)
voidserviceUnregistered(const QString &serviceName)

详细描述

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

  • 仅监视服务注册。
  • 仅监视服务注销。
  • 监视任何类型的服务所有权更改(默认模式)。

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

此类比使用 QDBusConnectionInterface::serviceOwnerChanged() 信号更有效率,因为它允许接收与该类感兴趣的相关信号。

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

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

  • com.example.backend1
  • com.example.backend1.foo
  • com.example.backend1.foo.bar

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

另请参阅QDBusConnection

成员类型文档

枚举 QDBusServiceWatcher::WatchModeFlag
QDBusServiceWatcher::WatchMode标志

QDBusServiceWatcher 支持三种不同的监视模式,这些模式由该标志配置

常量描述
QDBusServiceWatcher::WatchForRegistration0x01仅监视服务注册,忽略与任何其他服务所有权变更相关的信号。
QDBusServiceWatcher::WatchForUnregistration0x02仅监视服务注销,忽略与任何其他服务所有权变更相关的信号。
QDBusServiceWatcher::WatchForOwnerChange0x03监视任何类型的服务所有权变更。

WatchMode 类型是 QFlags<WatchModeFlag> 的同义词。它存储了 WatchModeFlag 值的按位或组合。

属性文档

[属性值] watchMode : WatchMode

注意:此属性支持 QProperty 绑定。

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

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

[属性值] watchedServices : QStringList

注意:此属性支持 QProperty 绑定。

此属性保留要监视的服务列表。

注意:使用 setServicesWatched() 修改此列表是一个昂贵操作。如果可能,请通过 addWatchedService() 和 removeWatchedService() 来更改它。

成员函数文档

[显式] QDBusServiceWatcher::QDBusServiceWatcher(QObject *parent = nullptr)

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

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

QDBusServiceWatcher::QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)

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

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

[虚拟 noexcept] QDBusServiceWatcher::~QDBusServiceWatcher()

销毁QDBusServiceWatcher对象并释放与之相关的任何资源。

void QDBusServiceWatcher::addWatchedService(const QString &newService)

newService添加到此对象监视的服务列表中。此函数比setWatchedServices()更高效,应在可能的情况下使用该函数添加服务。

删除任何现有的watchedServices绑定。

QDBusConnection QDBusServiceWatcher::connection() const

返回此对象所附着的QDBusConnection

另见 setConnection

bool QDBusServiceWatcher::removeWatchedService(const QString &service)

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

删除任何现有的watchedServices绑定。

如果删除了任何服务,此函数返回true

[signal] void QDBusServiceWatcher::serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)

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

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

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

另见 serviceRegistered()和serviceUnregistered

[signal] void QDBusServiceWatcher::serviceRegistered(const QString &serviceName)

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

另见 serviceUnregistered()和serviceOwnerChanged

[signal] void QDBusServiceWatcher::serviceUnregistered(const QString &serviceName)

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

另见 serviceRegistered()和serviceOwnerChanged

void QDBusServiceWatcher::setConnection(const QDBusConnection &connection)

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

注意,QDBusConnection 对象是引用计数的:在存在时,QDBusServiceWatcher 将保留对此连接的引用。只有在引用计数降至零时,该连接才会关闭,这样就保证了在此 QDBusServiceWatcher 对象存在期间收到任何通知。

另请参阅 connection

void QDBusServiceWatcher::setWatchedServices(const QStringList &services)

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

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

删除任何现有的watchedServices绑定。

注意: 属性 watchedServices 的设置函数。

另请参阅 watchedServices

QStringList QDBusServiceWatcher::watchedServices() const

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

注意: 属性 watchedServices 的获取函数。

另请参阅 setWatchedServices

© 2024 Qt 公司有限公司。此处包含的文档贡献的版权属于其 respective owners。此文档是根据自由软件基金会发布的 GNU 通用文档许可证 1.3 版 的条款许可的。Qt以及相应的标志是芬兰以及/或世界上其他国家的 Qt 公司的商标。所有其他商标均为其相应所有者的财产。