QDBusConnectionInterface Class

QDBusConnectionInterface 类提供对 D-Bus 总线守护进程服务的访问。更多

Header: #include <QDBusConnectionInterface>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus
继承: QDBusAbstractInterface

公共类型

enum RegisterServiceReply { ServiceNotRegistered, ServiceRegistered, ServiceQueued }
enum ServiceQueueOptions { DontQueueService, QueueService, ReplaceExistingService }
enum 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)

信号

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::ServiceNotRegistered0调用失败,服务名称未注册。
QDBusConnectionInterface::ServiceRegistered1调用者现在是服务名称的所有者。
QDBusConnectionInterface::ServiceQueued2调用者指定了QueueService 标志,且服务已被注册,因此我们处于队列中。

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

enum QDBusConnectionInterface::ServiceQueueOptions

在服务名称已被注册的情况下,用于确定服务注册行为的标志。

常量说明
QDBusConnectionInterface::DontQueueService0如果应用程序请求的名称已被注册,则不会执行队列。registeredService() 调用将直接失败。这是默认情况。
QDBusConnectionInterface::QueueService1尝试注册请求的服务,但如果已有其他应用程序注册了该服务,则不会尝试替换该服务。相反,只会将该应用程序放入队列,直到放弃为止。此时将发出serviceRegistered() 信号。
QDBusConnectionInterface::ReplaceExistingService2如果另一个应用程序已注册了服务名称,则应尝试替换它。

另请参阅 ServiceReplacementOptions

enum QDBusConnectionInterface::ServiceReplacementOptions

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

可能的值有

常量说明
QDBusConnectionInterface::DontAllowReplacement0不允许其他应用程序替换我们。该服务必须通过unregisterService() 明确取消注册,其他应用程序才能获取该服务。这是默认值。
QDBusConnectionInterface::AllowReplacement1允许其他应用程序使用registerService() 的ReplaceExistingService 选项替换我们,无需干预。如果发生这种情况,将发出serviceUnregistered() 信号。

另请参阅 ServiceQueueOptions

属性文档

[read-only] activatableServiceNames : const QDBusReply<QStringList>

持有可激活的服务名称

列出总线上可激活的所有名称。

访问功能:

QDBusReply<QStringList> activatableServiceNames() const

[read-only] registeredServiceNames : const QDBusReply<QStringList>

保存已注册的服务名称

列出当前在总线上注册的所有名称。

访问功能:

QDBusReply<QStringList> registeredServiceNames() const

成员函数文档

[signal] void QDBusConnectionInterface::callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call)

该信号在QDBusConnection::callWithCallback() 出现错误时发出。error 指明错误。call 是无法传送的信息。

另请参阅 QDBusConnection::callWithCallback() 。

[slot] QDBusReply<bool> QDBusConnectionInterface::isServiceRegistered(const QString &serviceName) const

如果serviceName 当前注册了服务名称,则返回true

[slot] 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() 。

[slot] QDBusReply<QString> QDBusConnectionInterface::serviceOwner(const QString &name) const

返回name 名称主要所有者的唯一连接名称。如果请求的名称没有所有者,则返回org.freedesktop.DBus.Error.NameHasNoOwner 错误。

[slot] QDBusReply<uint> QDBusConnectionInterface::servicePid(const QString &serviceName) const

返回当前持有总线服务serviceName 的进程的 Unix 进程 ID (PID)。

[signal] void QDBusConnectionInterface::serviceRegistered(const QString &service)

service 提供的总线服务名称(唯一连接名称或众所周知的服务名称)被本应用程序获取时,D-Bus 服务器会发出该信号。

获取发生在该应用程序使用registerService() 请求名称之后。

[slot] QDBusReply<uint> QDBusConnectionInterface::serviceUid(const QString &serviceName) const

返回当前持有总线服务serviceName 的进程的 Unix 用户 ID (UID) 。

[signal] void QDBusConnectionInterface::serviceUnregistered(const QString &service)

当该应用程序失去由service 提供的总线服务名称的所有权时,D-Bus 服务器会发出该信号。

[slot] QDBusReply<void> QDBusConnectionInterface::startService(const QString &name)

要求总线启动名称为name 的服务。

[slot] QDBusReply<bool> QDBusConnectionInterface::unregisterService(const QString &serviceName)

释放对公交服务名称serviceName 的所有权,该名称之前已在registerService() 注册。如果该应用程序拥有该名称的所有权,则会将其释放给其他应用程序。如果该应用程序只拥有该名称的队列,则放弃队列中的位置。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.