QDBusConnectionInterface Class
QDBusConnectionInterface 类提供了对 D-Bus 总线守护进程服务的访问。更多内容...
| 头文件: | #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 } |
属性
- activatableServiceNames : QDBusReply<QStringList>
- registeredServiceNames : 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 |
(since 6.10) QDBusReply<QVariantMap> | serviceCredentials(const QString &serviceName) 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 | 如果应用程序请求的名称已被占用,则不会进行排队。registeredService() 调用将直接失败。这是默认行为。 |
QDBusConnectionInterface::QueueService | 1 | 尝试注册所请求的服务,但如果另一个应用程序已经注册了该服务,则不会尝试替换它。相反,会将该应用程序放入队列,直到它被放弃。当这种情况发生时,将发出serviceRegistered()信号。 |
QDBusConnectionInterface::ReplaceExistingService | 2 | 如果另一个应用程序已经注册了该服务名称,则尝试将其替换。 |
另请参阅 ServiceReplacementOptions 。
enum QDBusConnectionInterface::ServiceReplacementOptions
用于确定D-Bus服务器是否应允许其他应用程序替换该应用程序通过ReplaceExistingService 选项注册的名称的标志。
可能的取值为:
| 常量 | 值 | 描述 |
|---|---|---|
QDBusConnectionInterface::DontAllowReplacement | 0 | 不允许其他应用程序取代我们。其他应用程序若要获取该服务,必须通过 `unregisterService()` 显式注销该服务。此为默认行为。 |
QDBusConnectionInterface::AllowReplacement | 1 | 允许其他应用程序通过将 `ReplaceExistingService ` 选项设置为 `registerService()` 来替换本服务,且无需干预。如果发生这种情况,将发出 `serviceUnregistered()` 信号。 |
另请参阅 ServiceQueueOptions 。
属性文档
[read-only] activatableServiceNames : QDBusReply<QStringList>
包含可激活的服务名称
列出总线上所有可激活的名称。
访问功能:
| QDBusReply<QStringList> | activatableServiceNames() const |
[read-only] registeredServiceNames : 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)
请求在总线上注册服务名称serviceName 。qoption 标志指定了当serviceName 已被注册时,D-Bus 服务器应如何处理。roption 标志指定了服务器是否应允许其他应用程序替换我们已注册的名称。
如果服务注册成功,将发出serviceRegistered() 信号。如果我们被放入队列,则在获得名称时将发出该信号。如果roption 为AllowReplacement ,当另一个应用程序替换该应用程序时,将发出serviceUnregistered() 信号。
另请参阅 unregisterService()。
[slot, since 6.10] QDBusReply<QVariantMap> QDBusConnectionInterface::serviceCredentials(const QString &serviceName) const
返回当前持有总线服务serviceName 的进程的连接凭据。
更多信息请参阅 <https://dbus.freedesktop.org/doc/dbus-specification.html> 中的“方法:org.freedesktop.DBus.GetConnectionCredentials”一节。
该函数在 Qt 6.10 中引入。
[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)
释放此前在registerService() 上注册的公交服务名称serviceName 的申领。如果该应用程序拥有该名称的所有权,则该名称将被释放,供其他应用程序申领。如果该应用程序仅将该名称加入队列,则将放弃其在队列中的位置。
© 2026 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.