QDBusConnectionInterface 类
QDBusConnectionInterface 类提供了对 D-Bus 守护进程服务的访问。更多信息...
头文件 | #include <QDBusConnectionInterface> |
CMake | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
qmake | QT += dbus |
继承 | QDBusAbstractInterface |
公共类型
枚举 | RegisterServiceReply { ServiceNotRegistered, ServiceRegistered, ServiceQueued } |
枚举 | ServiceQueueOptions { DontQueueService, QueueService, ReplaceExistingService } |
枚举 | ServiceReplacementOptions { DontAllowReplacement, AllowReplacement } |
属性
- activatableServiceNames : const QDBusReply<QStringList>
- registeredServiceNames : const QDBusReply<QStringList>
公共槽
QDBusReply<QStringList> | activatableServiceNames() const |
QDBusReply<bool> | isServiceRegistered(const QString &serviceName) const |
QDBusReply<QDBusConnectionInterface::RegisterServiceReply> | registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = DontAllowReplacement) |
QDBusReply<QStringList> | registeredServiceNames() const |
QDBusReply<QString> | serviceOwner(const QString &name) const |
QDBusReply<uint> | servicePid(const QString &serviceName) const |
QDBusReply<uint> | serviceUid(const QString &serviceName) const |
QDBusReply<void> | startService(const QString &name) |
QDBusReply<bool> | unregisterService(const QString &serviceName) |
信号
void | callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call) |
void | serviceRegistered(const QString &service) |
void | serviceUnregistered(const QString &service) |
详细描述
D-Bus 总线服务器守护进程提供一个特殊的接口 org.freedesktop.DBus
,允许客户端访问总线的一些属性,例如当前连接的客户端列表。QDBusConnectionInterface 类提供了对此接口的访问。
此类的最常见用途是在总线上使用registerService()和unregisterService()函数注册和注销服务名,使用isServiceRegistered()、registeredServiceNames()和serviceOwner()函数查询现有名称,以及通过serviceRegistered()、serviceUnregistered()和serviceOwnerChanged()信号接收客户已注册或注销的通知。
成员类型文档
enum QDBusConnectionInterface::RegisterServiceReply
从registerService()获取的可能返回值
常量 | 值 | 描述 |
---|---|---|
QDBusConnectionInterface::ServiceNotRegistered | 0 | 调用失败,服务名未注册。 |
QDBusConnectionInterface::ServiceRegistered | 1 | 调用者是服务名的所有者。 |
QDBusConnectionInterface::ServiceQueued | 2 | 调用者指定了QueueService标志,服务已注册,因此我们在队列中。 |
当此应用程序获取服务时,将发出serviceRegistered()信号。
enum QDBusConnectionInterface::ServiceQueueOptions
确定在服务名已注册的情况下如何处理服务注册的标志
常量 | 值 | 描述 |
---|---|---|
QDBusConnectionInterface::DontQueueService | 0 | 如果应用程序请求一个已拥有的名称,则不会进行排队。简单地调用失败。这是默认值。 |
QDBusConnectionInterface::QueueService | 1 | 尝试注册请求的服务,但不尝试替换另一个已在其中注册的应用程序。相反,只需将应用程序排队,直到其放弃。当发生这种情况时,将发出serviceRegistered()信号。 |
QDBusConnectionInterface::ReplaceExistingService | 2 | 如果另一个应用程序已注册服务名称,则尝试替换它。 |
另请参阅服务替换选项。
enum QDBusConnectionInterface::ServiceReplacementOptions
确定D-Bus服务器是否应允许其他应用程序使用ReplaceExistingService选项替换应用程序已使用注册的服务名称的标志。
可能的值是
常量 | 值 | 描述 |
---|---|---|
QDBusConnectionInterface::DontAllowReplacement | 0 | 不允许其他应用程序替换我们。必须使用unregisterService()显式注销服务,其他应用程序才能获取它。这是默认值。 |
QDBusConnectionInterface::AllowReplacement | 1 | 允许其他应用程序使用ReplaceExistingService选项在不进行干预的情况下替换我们。如果发生这种情况,将发出serviceUnregistered()信号。 |
另请参阅服务队列选项。
属性文档
[只读]
activatableServiceNames : const QDBusReply<QStringList>
包含可激活的服务名称
列出所有可以在总线上激活的名称。
访问函数
QDBusReply<QStringList> | activatableServiceNames() const |
[只读]
registeredServiceNames : const QDBusReply<QStringList>
存储已注册的服务名称
列出当前在总线上注册的所有名称。
访问函数
QDBusReply<QStringList> | registeredServiceNames() const |
成员函数文档
[信号]
void QDBusConnectionInterface::callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call)
在此信号发出时,QDBusConnection::callWithCallback 期间发生错误。 error 指定错误。 call 是无法传递的消息。
另请参阅QDBusConnection::callWithCallback。
[槽函数]
QDBusReply<bool> QDBusConnectionInterface::isServiceRegistered(const QString &serviceName) const
如果服务名称 serviceName 正在当前注册,返回 true
。
[槽函数]
QDBusReply<QDBusConnectionInterface::RegisterServiceReply> QDBusConnectionInterface::registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = DontAllowReplacement)
请求在总线上注册服务名称 serviceName。 qoption 标志指定如果 serviceName 已经注册,D-Bus 服务器应该如何处理。 roption 标志指定服务器是否允许其他应用程序替换我们的已注册名称。
如果服务注册成功,将发出 serviceRegistered() 信号。如果我们将放入队列中,当获得名称时将发出信号。如果 roption 是 AllowReplacement,如果另一个应用程序替换此应用程序,则将发出 serviceUnregistered() 信号。
另请参阅unregisterService。
[槽函数]
QDBusReply<QString> QDBusConnectionInterface::serviceOwner(const QString &name) const
返回名称 name 的主要所有者的唯一连接名称。如果请求的名称没有所有者,则返回一个 org.freedesktop.DBus.Error.NameHasNoOwner
错误。
[槽函数]
QDBusReply<uint> QDBusConnectionInterface::servicePid(const QString &serviceName) const
返回当前持有总线服务 serviceName 的进程的 Unix 进程 ID (PID)。
[signal]
void QDBusConnectionInterface::serviceRegistered(const QString &service)
当应用程序通过 service 请求的 D-Bus 服务名称(独特的连接名称或已知服务名称)被应用程序获取时,D-Bus 服务器将发出此信号。
获取将在应用程序使用 registerService() 处理请求名称后发生。
[slot]
QDBusReply<uint> QDBusConnectionInterface::serviceUid(const QString &serviceName) const
返回当前持有 D-Bus 服务 serviceName 的进程的 Unix 用户 ID (UID)。
[signal]
void QDBusConnectionInterface::serviceUnregistered(const QString &service)
当应用程序失去由 service 给出的 D-Bus 服务名称的所有权时,D-Bus 服务器将发出此信号。
[slot]
QDBusReply<void> QDBusConnectionInterface::startService(const QString &name)
请求总线启动由名称 name 指定的服务。
[slot]
QDBusReply<bool> QDBusConnectionInterface::unregisterService(const QString &serviceName)
释放对应于 serviceName 的 D-Bus 服务名称的要求,该名称之前在 registerService() 中注册过。如果该应用程序拥有该名称的所有权,则将其释放给其他应用程序声明。如果该应用程序只有名称队列中的位置,则放弃其在队列中的位置。
© 2024 Qt 公司有限公司。此处包含的文档贡献的版权属于其各自的拥有者。此处提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款提供的。Qt 及相关的标志是芬兰 Qt 公司及其在全球的子公司和关联公司的 商标。所有其他商标均为其各自所有者的财产。