QDBusServiceWatcher 类
QDBusServiceWatcher 类允许用户监视总线服务的变化。 更多...
头部 | #include <QDBusServiceWatcher> |
CMake | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
qmake | QT += dbus |
继承 | QObject |
公开类型
flags | WatchMode |
枚举 | WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange } |
属性
- watchMode : WatchMode
- watchedServices : QStringList
公开函数
QDBusServiceWatcher(QObject *parent = nullptr) | |
QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr) | |
虚拟 | ~QDBusServiceWatcher() |
void | addWatchedService(const QString &newService) |
QBindable<QDBusServiceWatcher::WatchMode> | bindableWatchMode() |
QBindable<QStringList> | bindableWatchedServices() |
QDBusConnection | connection() const |
bool | removeWatchedService(const QString &service) |
void | setConnection(const QDBusConnection &connection) |
void | setWatchMode(QDBusServiceWatcher::WatchMode mode) |
void | setWatchedServices(const QStringList &services) |
QDBusServiceWatcher::WatchMode | watchMode() const |
QStringList | watchedServices() const |
信号
void | serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner) |
void | serviceRegistered(const QString &serviceName) |
void | serviceUnregistered(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::WatchForRegistration | 0x01 | 仅监视服务注册,忽略与任何其他服务所有权变更相关的信号。 |
QDBusServiceWatcher::WatchForUnregistration | 0x02 | 仅监视服务注销,忽略与任何其他服务所有权变更相关的信号。 |
QDBusServiceWatcher::WatchForOwnerChange | 0x03 | 监视任何类型的服务所有权变更。 |
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 连接。此外,此函数立即开始监视服务 service 的 watchMode 变更。
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 公司的商标。所有其他商标均为其相应所有者的财产。