QDBusConnectionInterface 类

QDBusConnectionInterface 类提供了对 D-Bus 守护进程服务的访问。更多信息...

头文件 #include <QDBusConnectionInterface>
CMakefind_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmakeQT += dbus
继承 QDBusAbstractInterface

公共类型

枚举RegisterServiceReply { ServiceNotRegistered, ServiceRegistered, ServiceQueued }
枚举ServiceQueueOptions { DontQueueService, QueueService, ReplaceExistingService }
枚举ServiceReplacementOptions { DontAllowReplacement, AllowReplacement }

属性

公共槽

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)

信号

voidcallWithCallbackFailed(const QDBusError &error, const QDBusMessage &call)
voidserviceRegistered(const QString &service)
voidserviceUnregistered(const QString &service)

详细描述

D-Bus 总线服务器守护进程提供一个特殊的接口 org.freedesktop.DBus,允许客户端访问总线的一些属性,例如当前连接的客户端列表。QDBusConnectionInterface 类提供了对此接口的访问。

此类的最常见用途是在总线上使用registerService()和unregisterService()函数注册和注销服务名,使用isServiceRegistered()、registeredServiceNames()和serviceOwner()函数查询现有名称,以及通过serviceRegistered()、serviceUnregistered()和serviceOwnerChanged()信号接收客户已注册或注销的通知。

成员类型文档

enum QDBusConnectionInterface::RegisterServiceReply

registerService()获取的可能返回值

常量描述
QDBusConnectionInterface::ServiceNotRegistered0调用失败,服务名未注册。
QDBusConnectionInterface::ServiceRegistered1调用者是服务名的所有者。
QDBusConnectionInterface::ServiceQueued2调用者指定了QueueService标志,服务已注册,因此我们在队列中。

当此应用程序获取服务时,将发出serviceRegistered()信号。

enum QDBusConnectionInterface::ServiceQueueOptions

确定在服务名已注册的情况下如何处理服务注册的标志

常量描述
QDBusConnectionInterface::DontQueueService0如果应用程序请求一个已拥有的名称,则不会进行排队。简单地调用失败。这是默认值。
QDBusConnectionInterface::QueueService1尝试注册请求的服务,但不尝试替换另一个已在其中注册的应用程序。相反,只需将应用程序排队,直到其放弃。当发生这种情况时,将发出serviceRegistered()信号。
QDBusConnectionInterface::ReplaceExistingService2如果另一个应用程序已注册服务名称,则尝试替换它。

另请参阅服务替换选项

enum QDBusConnectionInterface::ServiceReplacementOptions

确定D-Bus服务器是否应允许其他应用程序使用ReplaceExistingService选项替换应用程序已使用注册的服务名称的标志。

可能的值是

常量描述
QDBusConnectionInterface::DontAllowReplacement0不允许其他应用程序替换我们。必须使用unregisterService()显式注销服务,其他应用程序才能获取它。这是默认值。
QDBusConnectionInterface::AllowReplacement1允许其他应用程序使用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)

请求在总线上注册服务名称 serviceNameqoption 标志指定如果 serviceName 已经注册,D-Bus 服务器应该如何处理。 roption 标志指定服务器是否允许其他应用程序替换我们的已注册名称。

如果服务注册成功,将发出 serviceRegistered() 信号。如果我们将放入队列中,当获得名称时将发出信号。如果 roptionAllowReplacement,如果另一个应用程序替换此应用程序,则将发出 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 公司及其在全球的子公司和关联公司的 商标。所有其他商标均为其各自所有者的财产。