qdbusconnection_zh
2022-04-07 14:37:53

Class::QDBusConnection

暂无该属性


Detailed Description

QDBusConnection 类表示到 D-Bus 总线守护进程的连接。 这个类是一个 D-Bus 的会话起始点。可以使用它访问远程对象,接口;连接远程信号到对象的槽;注册对象,等等。

使用 connectToBus() 函数创建的 D-Bus 连接,该函数打开一个到服务器守护程序的连接,并执行初始化工作,且关联一个连接名到连接。接下来使用相同的名称来连接,将返回同一个连接。

然后使用 disconnectFromBus() 这个函数断开连接。

一旦断开连接,调用 connectToBus() 将不会重新建立连接,必须创建一个新的 QDBusConnection 实例。

作为两种最常见的连接类型, sessionBus()systemBus() 函数分别打开会话服务器守护程序和系统服务器守护程序的连接并返回这些连接在首次使用时打开,在 QCoreApplication 析构函数运行时关闭。

D-Bus 还支持点对点的连接,无需总线服务器守护程序。使用此功能,两个应用程序可以直接交流和交换信息。可以通过传递一个地址给  connectToBus() 函数来实现,该函数由另一个使用  QDBusServer  的 D-Bus 应用程序打开。

QDBusConnection::QDBusConnection

[public constructor  ]

QDBusConnection(const QString &name) 创建一个名称为_name_的连接的 QDBusConnection 对象。

该函数不会打开这个连接。必须调用 connectToBus() 才能将其打开。

QDBusConnection::QDBusConnection

[public constructor  ]

QDBusConnection(const QDBusConnection &other) 创建一个_other_连接的副本。

QDBusConnection::QDBusConnection

[private move-constructor  ]

QDBusConnection(QDBusConnection &&other)

QDBusConnection::asyncCall

[public plain  ]

QDBusPendingCall asyncCall(const QDBusMessage &message, int timeout) const 通过此连接发送_message_并立即返回。此函数只适用于方法调用。它返回一个跟踪响应状态的 QDBusPendingCall 类型的对象,该对象可用于跟踪答复的状态。

如果在_timeout_毫秒内未收到响应,则会自动抛出错误,表示调用已超时_timeout_默认为-1,它将替换为一个确定的值(通常为25秒),该值适合于进程间通信。此超时时间也是 QDBusPendingCall::waitForFinished() 中等待的上限。

请参见 QDBusInterface::asyncCall() 函数,用更友好的方式进行调用。

QDBusConnection::baseService

[public plain  ]

QString baseService() const 如果此 QDBusConnection 对象已连接,则返回此连接唯一的连接名称,否则返回一个空的 QString

唯一连接名称是由 D-Bus 服务器守护程序在连接时分配的,形式为“:x.xxx”(其中x为十进制数字)的字符串它在总线中唯一标识此客户端。

对于点对点的连接,此函数为返回一个空 QString

QDBusConnection::call

[public plain  ]

QDBusMessage call(const QDBusMessage &message, QDBus::CallMode mode, int timeout) const 通过此连接发送_message_,并阻塞(最多等待_timeout_)毫秒,以等待响应此函数仅适用于方法调用它以响应消息作为返回值,返回值为 QDBusMessage::ReplyMessageQDBusMessage::ErrorMessage 类型。

如果在_timeout_毫秒内未收到响应,则将自动抛出错误,表示调用已超时_timeout_默认为-1,它将替换为一个确定的值(通常为25秒),该值适合于进程间通信。

请参见 QDBusInterface::call() 函数,用更友好的方式进行调用。

**Warning:**如果_mode_为 QDBus::BlockWithGui ,则此函数将重新进入 Qt 事件循环等待响应在等待期间,它可能会向应用程序进行信号的传递和其它方法的调用。因此,无论何时调用,都必须准备好对重入进行处理。

QDBusConnection::callWithCallback

[public plain  ]

bool callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod, int timeout) const 通过此连接发送_message_并立即返回。收到应答后,将在_receiver_对象中调用_returnMethod_方法如果发生错误,将改为调用_errorMethod_方法。

如果在_timeout_毫秒内未收到响应,则将自动抛出错误,表示调用已超时_timeout_默认为-1,它将替换为一个确定的值(通常为25秒),该值适合于进程间通信。

此函数仅适用于方法调用只要参数类型匹配且没有错误发生,就可以确保该槽将在响应中被调用一次。

如果已发送消息,则返回True;如果无法发送消息,则返回 false。

QDBusConnection::callWithCallback

[public plain  ]

bool callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, int timeout) const 这是一个重载函数。

通过此连接发送_message_并立即返回。收到响应后,将在_receiver_对象中调用_returnMethod_方法。

此函数仅适用于方法调用只要参数类型匹配且没有错误发生,就可以确保该槽将在响应中被调用一次。

此函数是危险的,因为它无法反馈错误,包括超时。

如果已发送消息,则返回True;如果无法发送消息,则返回 false。

QDBusConnection::connect

[public plain  ]

bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot) 通过指定_service_,_path_,_interface_和_name_参数将信号连接到_receiver_对象中的_slot_。参数_service_和_path_为空的话,表示可以从任何远程应用连接到有任意一对(_interface_,_name_)参数的信号。

如果连接成功,则返回True

**Warning:**只有当参数匹配时,信号才会传递到槽只有当接收到信号时才能进行此验证,而不是在连接时进行。

QDBusConnection::connect

[public plain  ]

bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot) 这是一个重载函数。

将信号连接到_receiver_对象的_slot_与之前的 connect() 重载不同,此函数允许使用_signature_变量指定要连接的参数签名该函数验证此签名是否可以传递到指定的_slot_,不能则返回 false。

如果连接成功,则返回True

**Note:**此函数会验证信号签名是否与槽的参数匹配,但不会验证远程服务中具有给定签名的实际信号是否存在。

QDBusConnection::connect

[public plain  ]

bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot) 这是一个重载函数。

将信号连接到_receiver_对象的_slot_与之前的 connect() 重载不同,此函数允许使用_signature_变量指定要连接的参数签名该函数验证此签名是否可以传递到指定的_slot_,不能则返回 false。

_argumentMatch_参数按顺序列出需要匹配的字符串参数请注意,要匹配一个空字符串,需要传递一个为空但不为 null 的 QString (即 QString (“”))空的 QString 会跳过该位置的匹配。

如果连接成功,则返回True

**Note:**此函数会验证信号签名是否与槽的参数匹配,但不会验证远程服务中具有给定签名的实际信号是否存在。

QDBusConnection::connectToBus

[public plain static ]

QDBusConnection connectToBus(QDBusConnection::BusType type, const QString &name) 打开类型为_type_的连接器,连接到一个已知总线上,并将_name_名称的连接与之关联返回与该连接关联的 QDBusConnection 对象。

QDBusConnection::connectToBus

[public plain static ]

QDBusConnection connectToBus(const QString &address, const QString &name) 在_address_地址上打开到专用总线的连接,并关联_name_连接名返回与该连接关联的 QDBusConnection 对象。

QDBusConnection::connectToPeer

[public plain static ]

QDBusConnection connectToPeer(const QString &address, const QString &name) 在_address_地址上打开点对点连接,并关联_name_连接名返回与该连接关联的 QDBusConnection 对象。

QDBusConnection::connectionCapabilities

[public plain  ]

QDBusConnection::ConnectionCapabilities connectionCapabilities() const 此连接返回总线服务或对等协商的功能如果未连接此 QDBusConnection ,则此函数不返回任何功能。

QDBusConnection::disconnect

[public plain  ]

bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot) 断开对象插槽_slot_中的_service_,_path_,_interface_和_name_参数指定的信号参数必须与传递给 connect() 函数的参数相同。

如果断开连接成功,则返回True

QDBusConnection::disconnect

[public plain  ]

bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot) 这是一个重载函数。

从_receiver_对象的槽_slot_中断开以_service_,_path_,_interface_,_name_和_signature_参数指定的信号参数必须与传递给 connect() 函数的参数相同。

如果断开连接成功,则返回True

QDBusConnection::disconnect

[public plain  ]

bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot) 这是一个重载函数。

从_receiver_对象的槽_slot_中断开以_service_,_path_,_interface_,_name_,_argumentMatch_和_signature_参数指定的信号参数必须与传递给 connect() 函数的参数相同。

如果断开连接成功,则返回True

QDBusConnection::disconnectFromBus

[public plain static ]

void disconnectFromBus(const QString &name) 关闭名称为_name_的总线连接。

请注意,如果仍然存在 QDBusConnection 对象与之连接,则直到所有引用都被删除,该连接才会关闭但是,无法使用 QDBusConnection 构造函数来创建其它的引用。

QDBusConnection::disconnectFromPeer

[public plain static ]

void disconnectFromPeer(const QString &name) 关闭名称为_name_的对等连接。

请注意,如果仍然存在 QDBusConnection 对象与之连接,则直到所有引用都被删除,该连接才会关闭但是,无法使用 QDBusConnection 构造函数来创建其它的引用。

QDBusConnection::interface

[public plain  ]

QDBusConnectionInterface * interface() const 返回一个 QDBusConnectionInterface 对象,该对象表示此连接上的 D-Bus 服务接口。

QDBusConnection::internalPointer

[private plain  ]

void * internalPointer() const 返回一个在内部实现定义的指针。目前,会返回一个 DBusConnection* 指针,而不改变引用计数。如果调用者想存储这个指针,则需要调用 dbus_connection_ref。

QDBusConnection::isConnected

[public plain  ]

bool isConnected() const 如果 QDBusConnection 对象已连接,则返回True

QDBusConnection::lastError

[public plain  ]

QDBusError lastError() const 返回该连接中最后发生的错误。

此函数是为底层代码提供的如果使用的是 QDBusInterface::call() ,则错误代码由其返回。

See also QDBusInterface QDBusMessage

QDBusConnection::localMachineId

[public plain static ]

QByteArray localMachineId() 返回 D-Bus 系统已知的本地机器 ID 每个运行 D-Bus 的节点或主机都有一个唯一的标识符,如果它们共享文件系统之类的资源,则可以将它与其它主机区分开。

请注意,在系统启动期间不能保证本地计算机 ID 是持久的,所以不应该将这个标识符存储在持久性存储中(如文件系统)它只保证在这个启动会话的生命周期内保持不变。

QDBusConnection::name

[public plain  ]

QString name() const 返回此连接的连接名称,与给 connectToBus() 名称参数一致。

连接名称可以用于唯一标识与总线的基础连接从单个连接创建的副本将始终隐式地共享基础连接,所以具有相同的连接名称。

相反,具有不同连接名称的两个连接将始终连接到不同的总线上,或者在该总线上有不同且唯一的名称(由 baseService() 返回)。

See also connectToBus() disconnectFromBus()

QDBusConnection::objectRegisteredAt

[public plain  ]

QObject * objectRegisteredAt(const QString &path) const 返回一个以给定的_path_参数使用 registerObject() 注册的对象。

QDBusConnection::operator=

[private move-assign  ]

QDBusConnection & operator=(QDBusConnection &&other)

QDBusConnection::operator=

[public copy-assign  ]

QDBusConnection & operator=(const QDBusConnection &other) 在此对象中创建一个_other_连接的副本请注意,该对象在复制之前引用的连接不会自己断开。

See also disconnectFromBus()

QDBusConnection::qt_check_for_QGADGET_macro

[private plain  ]

void qt_check_for_QGADGET_macro()

QDBusConnection::qt_static_metacall

[private plain static ]

void qt_static_metacall(QObject *, QMetaObject::Call , int , void **)

QDBusConnection::registerObject

[public plain  ]

bool registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options) 在_path_路径上注册_object_对象,如果注册成功,则返回True_object_参数指定通过 D-Bus 暴露多少_object_对象。

该函数不会替换现有对象:如果在路径_path_中已经注册了一个对象,则此函数将返回 false。需要先使用 unregisterObject() 取消注册。

ExportChildObjects 标志根据已注册对象的路径和子对象的 QObject::objectName 导出 D-Bus 上的子对象因此,子对象必须有一个对象名。

不能将对象注册为使用 ExportChildObjects 注册的对象的子对象。

QDBusConnection::registerObject

[public plain  ]

bool registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options) 这是一个重载函数。

使用接口名_interface_在路径_path_上注册对象_object_,如果注册成功,则返回True_options_参数指定将通过 D-Bus 暴露多少_object_对象。

该函数不会替换现有对象:如果在路径_path_中已经注册了一个对象,则此函数将返回 false。需要先使用 unregisterObject() 取消注册。

ExportChildObjects 标志根据已注册对象的路径和子对象的 QObject::objectName 导出 D-Bus 上的子对象因此,子对象必须有一个对象名。

不能将对象注册为使用 ExportChildObjects 注册的对象的子对象。

QDBusConnection::registerService

[public plain  ]

bool registerService(const QString &serviceName) 尝试在 D-Bus 服务器上注册_serviceName_,如果注册成功,则返回True如果该名称已经被另一个应用程序注册,则注册失败。

See also unregisterService() QDBusConnectionInterface::registerService()

QDBusConnection::registerVirtualObject

[private plain  ]

bool registerVirtualObject(const QString &path, QDBusVirtualObject *treeNode, QDBusConnection::VirtualObjectRegisterOption options) 为一个路径注册一个 QDBusTreeNode 它可以处理一个路径以及它的所有子路径,从而可以处理多个 DBus 节点。

使用带有路径的 unregisterObject() 函数,注销一个 QDBusTreeNode

QDBusConnection::send

[public plain  ]

bool send(const QDBusMessage &message) const 通过此_message_发送消息,不需要等待响应。消息适用于错误、信号和返回值,或不需要返回值的调用。

如果消息已成功进入队列,则返回True,否则返回 false。

QDBusConnection::sender

[public plain static ]

QDBusConnection sender() 始终返回一个断开连接的,无效 QDBusConnection 对象。如果要用到发送方连接的旧功能,请使用 QDBusContext

See also QDBusContext

QDBusConnection::sessionBus

[public plain static ]

QDBusConnection sessionBus() 返回一个会话总线打开的 QDBusConnection 对象。此函数返回的对象的有效引用,直到应用程序结束连接将会被关闭,对象将被删除。

QDBusConnection::swap

[public plain  ]

void swap(QDBusConnection &other) 将这个 QDBusConnection 实例与_other_实例交换。

QDBusConnection::systemBus

[public plain static ]

QDBusConnection systemBus() 返回一个随系统总线打开的 QDBusConnection 对象。该函数返回的对象引用,在 QCoreApplication 的析构函数运行之前是有效的,关闭连接会删除该对象。

QDBusConnection::unregisterObject

[public plain  ]

void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode) 在_path_给出的对象路径上取消注册 registerObject() 注册的对象,如果_mode_是 QDBusConnection::UnregisterTree ,则也注销其所有子对象。

请注意,不能注销未使用 registerObject() 注册的对象。

QDBusConnection::unregisterService

[public plain  ]

bool unregisterService(const QString &serviceName) 注销之前在 registerService() 中注册的_serviceName_服务,如果成功,则返回True

See also registerService() QDBusConnectionInterface::unregisterService()

QDBusConnection::~QDBusConnection

[public destructor  ]

~QDBusConnection() 销毁这个对象。并不会关闭连接:必须调用 disconnectFromBus() 来关闭连接。 指定总线连接的类型。有效的总线类型为:

QDBusConnection::SessionBusSessionBus

Constant Description
QDBusConnection::SessionBus 会话总线,与正在运行的桌面会话相关联。
QDBusConnection::SystemBusSystemBus
Constant Description
:------- :-----
QDBusConnection::SystemBus 系统总线,用于与系统范围的进程进行通信
QDBusConnection::ActivationBusActivationBus
Constant Description
:------- :-----
QDBusConnection::ActivationBus 激活总线,即启动服务总线的“别名”

在会话总线上,可以找到同一用户共享同一桌面会话的其它应用程序(因此得名)。但在系统总线上,通常会找到整个系统共享的进程。

该枚举描述了 D-Bus 连接的可用功能。

QDBusConnection::UnixFileDescriptorPassingUnixFileDescriptorPassing

Constant Description
QDBusConnection::UnixFileDescriptorPassing 允许将 Unix 文件描述符传递给其它进程(请参阅 QDBusUnixFileDescriptor

See also connectionCapabilities() 指定注册对象用于连接的选项。可能的值为:

QDBusConnection::ExportAdaptorsExportAdaptors

Constant Description
QDBusConnection::ExportAdaptors 导出在此对象中找到的适配器的内容
QDBusConnection::ExportScriptableSlotsExportScriptableSlots
Constant Description
:------- :-----
QDBusConnection::ExportScriptableSlots 导出该对象的可编写脚本的槽
QDBusConnection::ExportScriptableSignalsExportScriptableSignals
Constant Description
:------- :-----
QDBusConnection::ExportScriptableSignals 导出该对象的可编写脚本的信号
QDBusConnection::ExportScriptablePropertiesExportScriptableProperties
Constant Description
:------- :-----
QDBusConnection::ExportScriptableProperties 导出该对象的脚本属性
QDBusConnection::ExportScriptableInvokablesExportScriptableInvokables
Constant Description
:------- :-----
QDBusConnection::ExportScriptableInvokables 导出此对象的可编写脚本的调用
QDBusConnection::ExportScriptableContentsExportScriptableContents
Constant Description
:------- :-----
QDBusConnection::ExportScriptableContents
QDBusConnection::ExportNonScriptableSlotsExportNonScriptableSlots
Constant Description
:------- :-----
QDBusConnection::ExportNonScriptableSlots 导出该对象不可编写脚本的槽
QDBusConnection::ExportNonScriptableSignalsExportNonScriptableSignals
Constant Description
:------- :-----
QDBusConnection::ExportNonScriptableSignals 导出该对象不可编写脚本的信号
QDBusConnection::ExportNonScriptablePropertiesExportNonScriptableProperties
Constant Description
:------- :-----
QDBusConnection::ExportNonScriptableProperties 导出该对象不可编写脚本的属性
QDBusConnection::ExportNonScriptableInvokablesExportNonScriptableInvokables
Constant Description
:------- :-----
QDBusConnection::ExportNonScriptableInvokables 导出该对象的不可写的调用
QDBusConnection::ExportNonScriptableContentsExportNonScriptableContents
Constant Description
:------- :-----
QDBusConnection::ExportNonScriptableContents
QDBusConnection::ExportAllSlotsExportAllSlots
Constant Description
:------- :-----
QDBusConnection::ExportAllSlots 导出该对象的所有槽
QDBusConnection::ExportAllSignalsExportAllSignals
Constant Description
:------- :-----
QDBusConnection::ExportAllSignals 导出该对象的所有信号
QDBusConnection::ExportAllPropertiesExportAllProperties
Constant Description
:------- :-----
QDBusConnection::ExportAllProperties 导出该对象的所有属性
QDBusConnection::ExportAllInvokablesExportAllInvokables
Constant Description
:------- :-----
QDBusConnection::ExportAllInvokables 导出此对象的可调用项
QDBusConnection::ExportAllContentsExportAllContents
Constant Description
:------- :-----
QDBusConnection::ExportAllContents 导出此对象的所有内容
QDBusConnection::ExportChildObjectsExportChildObjects
Constant Description
:------- :-----
QDBusConnection::ExportChildObjects 导出该对象的子对象

See also registerObject() QDBusAbstractAdaptor usingadaptors.html 此模式注销一个对象的路径:

QDBusConnection::UnregisterNodeUnregisterNode

Constant Description
QDBusConnection::UnregisterNode 仅注销此节点:不会注销子对象
QDBusConnection::UnregisterTreeUnregisterTree
Constant Description
:------- :-----
QDBusConnection::UnregisterTree 注销该节点及其所有子节点

但是请注意,如果该对象是使用 ExportChildObjects 选项注册的,也会注销子对象。

通过此选项,可以注册具有连接的虚拟对象。可能的值为:

QDBusConnection::SingleNodeSingleNode

Constant Description
QDBusConnection::SingleNode 注册只处理一个路径的虚拟对象
QDBusConnection::SubPathSubPath
Constant Description
:------- :-----
QDBusConnection::SubPath 注册处理所有子路径的虚拟对象

See also registerVirtualObject() QDBusVirtualObject

typedef QDBusConnection::ConnectionCapabilities

typedef QDBusConnection::QtGadgetHelper

typedef QDBusConnection::RegisterOptions

typedef QDBusConnection::VirtualObjectRegisterOptions