QDBusMessage Class

QDBusMessage 类表示通过 D-Bus 总线发送或接收的一条消息。更多

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

公共类型

enum MessageType { MethodCallMessage, SignalMessage, ReplyMessage, ErrorMessage, InvalidMessage }

公共函数

QDBusMessage()
QDBusMessage(const QDBusMessage &other)
~QDBusMessage()
QList<QVariant> arguments() const
bool autoStartService() const
QDBusMessage createErrorReply(const QDBusError &error) const
QDBusMessage createErrorReply(QDBusError::ErrorType type, const QString &msg) const
QDBusMessage createErrorReply(const QString &name, const QString &msg) const
QDBusMessage createReply(const QList<QVariant> &arguments = QList<QVariant>()) const
QDBusMessage createReply(const QVariant &argument) const
QString errorMessage() const
QString errorName() const
QString interface() const
bool isDelayedReply() const
bool isInteractiveAuthorizationAllowed() const
bool isReplyRequired() const
QString member() const
QString path() const
QString service() const
void setArguments(const QList<QVariant> &arguments)
void setAutoStartService(bool enable)
void setDelayedReply(bool enable) const
void setInteractiveAuthorizationAllowed(bool enable)
QString signature() const
void swap(QDBusMessage &other)
QDBusMessage::MessageType type() const
QDBusMessage &operator<<(const QVariant &arg)
QDBusMessage &operator=(const QDBusMessage &other)

静态公共成员

QDBusMessage createError(const QDBusError &error)
QDBusMessage createError(QDBusError::ErrorType type, const QString &msg)
QDBusMessage createError(const QString &name, const QString &msg)
QDBusMessage createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method)
QDBusMessage createSignal(const QString &path, const QString &interface, const QString &name)
QDBusMessage createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name)

详细说明

该对象可代表总线上可能出现的四种不同类型信息中的任何一种(MessageType ):

  • 方法调用
  • 方法返回值
  • 信号发射
  • 错误代码

这种类型的对象是用静态createError(),createMethodCall() 和createSignal() 函数创建的。使用QDBusConnection::send() 函数发送消息。

成员类型文档

enum QDBusMessage::MessageType

可能的信息类型

常量描述
QDBusMessage::MethodCallMessage1代表传出或传入方法调用的报文
QDBusMessage::SignalMessage4代表传出或传入信号发射的信息
QDBusMessage::ReplyMessage2代表方法调用返回值的信息
QDBusMessage::ErrorMessage3代表方法调用出错条件的报文
QDBusMessage::InvalidMessage0无效报文:从 D-Bus 收到的报文永远不会设置该值。

成员函数文档

QDBusMessage::QDBusMessage()

构造一个空的、无效的 QDBusMessage 对象。

另请参阅 createError()、createMethodCall() 和createSignal()。

QDBusMessage::QDBusMessage(const QDBusMessage &other)

构造other 所给对象的副本。

注意:QDBusMessage 对象是共享的。对副本所做的修改也会影响原始副本。更多信息,请参阅setDelayedReply() 。

[noexcept] QDBusMessage::~QDBusMessage()

弃用对象并释放所持有的资源。

QList<QVariant> QDBusMessage::arguments() const

返回将要发送或已从 D-Bus 收到的参数列表。

另请参见 setArguments().

bool QDBusMessage::autoStartService() const

返回setAutoStartService() 设置的自动启动标志。默认情况下,该标志为 true,这意味着Qt D-Bus 将自动启动尚未运行的服务。

另请参阅 setAutoStartService()。

[static] QDBusMessage QDBusMessage::createError(const QDBusError &error)

构建一个新的 DBus 报文,代表给定的error

[static] QDBusMessage QDBusMessage::createError(QDBusError::ErrorType type, const QString &msg)

使用消息msg 为错误类型type 构建新的 DBus 消息。返回 DBus 信息。

[static] QDBusMessage QDBusMessage::createError(const QString &name, const QString &msg)

用给定的namemsg 构建一个新的 DBus 消息,代表一个错误。

QDBusMessage QDBusMessage::createErrorReply(const QDBusError &error) const

根据给定的error 对象,构造一条新的 DBus 消息,代表一条错误回复消息。

QDBusMessage QDBusMessage::createErrorReply(QDBusError::ErrorType type, const QString &msg) const

使用消息msg 为错误类型type 构建新的 DBus 回复消息。返回 DBus 报文。

QDBusMessage QDBusMessage::createErrorReply(const QString &name, const QString &msg) const

用给定的namemsg 构建一条新的 DBus 报文,代表一条错误回复报文。

[static] QDBusMessage QDBusMessage::createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method)

构造一个新的 DBus 消息,代表一个方法调用。方法调用总是通知其目标地址(service,path,interfacemethod )。

如果方法名称是唯一的,DBus 总线允许调用给定远程对象上的方法,而无需指定目标接口。但是,如果远程对象上的两个接口导出了相同的方法名,结果将是未定义的(可能调用其中一个接口,也可能返回错误)。

在对等上下文(即不在总线上)中使用 DBus 时,service 参数是可选的。

QDBusInterface 类为同步方法调用提供了更简单的抽象。

该函数返回一个QDBusMessage 对象,可通过QDBusConnection::call() 发送。

QDBusMessage QDBusMessage::createReply(const QList<QVariant> &arguments = QList<QVariant>()) const

用给定的arguments 构建代表回复的新 DBus 报文。

QDBusMessage QDBusMessage::createReply(const QVariant &argument) const

用给定的argument 构建代表回复的新 DBus 报文。

[static] QDBusMessage QDBusMessage::createSignal(const QString &path, const QString &interface, const QString &name)

用给定的pathinterfacename 构建一个新的 DBus 消息,代表信号发射。

DBus 信号由一个应用程序发出,所有监听该接口信号的应用程序都会接收到该信号。

返回的QDBusMessage 对象可使用QDBusConnection::send() 函数发送。

[static] QDBusMessage QDBusMessage::createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name)

用给定的pathinterfacename 构建一个新的 DBus 消息,代表向特定目的地发出的信号。

DBus 信号从一个应用程序发出,只有拥有目的地service 名称的应用程序才能接收。

返回的QDBusMessage 对象可使用QDBusConnection::send() 函数发送。

QString QDBusMessage::errorMessage() const

返回与收到的错误相关的可读信息。

QString QDBusMessage::errorName() const

返回收到的错误名称。

QString QDBusMessage::interface() const

返回被调用方法(如果是方法调用)或接收信号的接口。

bool QDBusMessage::isDelayedReply() const

返回由setDelayedReply() 设置的延迟回复标志。默认情况下,该标志为 false,这意味着Qt D-Bus 会在必要时自动生成回复。

bool QDBusMessage::isInteractiveAuthorizationAllowed() const

返回报文是否设置了ALLOW_INTERACTIVE_AUTHORIZATION 标志。

另请参阅 setInteractiveAuthorizationAllowed() 和QDBusAbstractInterface::isInteractiveAuthorizationAllowed()。

bool QDBusMessage::isReplyRequired() const

返回表示该信息是否应得到回复的标志。这只对method call messages 有意义:任何其他类型的邮件都不可能有回复,因此该函数总是返回 false。

QString QDBusMessage::member() const

返回发出的信号名称或调用的方法名称。

QString QDBusMessage::path() const

返回该信息发送(方法调用)或接收(信号)对象的路径。

QString QDBusMessage::service() const

返回服务名称或远程方法调用的总线地址。

void QDBusMessage::setArguments(const QList<QVariant> &arguments)

设置将通过 D-Bus 发送到arguments 的参数。这些参数将是方法调用的参数或信号中的参数。

请注意,arguments 中不允许使用无效的QVariant 作为QVariantMap 的值。

另请参阅 arguments() 。

void QDBusMessage::setAutoStartService(bool enable)

将自动启动标志设置为enable 。该标志只对方法调用消息有意义,它告诉 D-Bus 服务器自动启动服务名所负责的服务,或者不自动启动。

默认情况下,该标记为 "true",即服务会自动启动。这意味着

当该方法调用所指向的服务已经运行时,该方法调用将被发送给它。如果服务尚未运行,则要求 D-Bus 守护进程自动启动分配给该服务名的服务。这将通过放置在 D-Bus 服务器已知目录中的 .service 文件来处理。这些文件分别包含一个服务名和一个程序的路径,当请求该服务名时,该程序将被执行。

另请参阅 autoStartService().

void QDBusMessage::setDelayedReply(bool enable) const

设置是否稍后回复消息(如果enable 为 true),或是否由Qt D-Bus 自动生成回复(如果enable 为 false)。

在 D-Bus 中,所有方法调用都必须向调用者生成回复,除非调用者明确表示不这样做(请参阅isReplyRequired() )。QtDBus 会自动为任何被调用的插槽生成这样的回复,但它也允许插槽表示是否将在函数处理完成后的稍后时间负责发送回复。

另请参阅 isDelayedReply() 和延迟回复

void QDBusMessage::setInteractiveAuthorizationAllowed(bool enable)

启用或禁用消息中的ALLOW_INTERACTIVE_AUTHORIZATION 标志。

该标记只适用于方法调用信息 (QDBusMessage::MethodCallMessage)。如果enable 设置为true ,则该标记向被调用者表明,方法调用者准备在处理实际方法之前等待交互式授权(例如通过 Polkit)。

如果enable 设置为false ,则不设置该标记,这意味着另一端将以非交互方式迅速做出任何授权决定。这是默认情况。

org.freedesktop.DBus.Error.InteractiveAuthorizationRequired 错误表示授权失败,但如果设置了该标记,授权可能会成功。

另请参阅 isInteractiveAuthorizationAllowed() 和QDBusAbstractInterface::setInteractiveAuthorizationAllowed()。

QString QDBusMessage::signature() const

返回接收到的信号或方法调用输出参数的签名。

[noexcept] void QDBusMessage::swap(QDBusMessage &other)

将此信息与other 互换。这一操作速度非常快,从未出现过故障。

QDBusMessage::MessageType QDBusMessage::type() const

返回信息类型。

QDBusMessage &QDBusMessage::operator<<(const QVariant &arg)

在方法调用或信号发射中,将参数arg 添加到通过 D-Bus 发送的参数列表中。

QDBusMessage &QDBusMessage::operator=(const QDBusMessage &other)

复制other 所给对象的内容。

注意:QDBusMessage 对象是共享的。对副本所做的修改也会影响原始副本。更多信息请参阅setDelayedReply() 。

© 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.