QDBusMessage 类

QDBusMessage 类表示通过 D-Bus 总线发送或接收的单一消息。查看详情...

头部 #include <QDBusMessage>
CMakefind_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmakeQT += dbus

公开类型

枚举MessageType { MethodCallMessage, SignalMessage, ReplyMessage, ErrorMessage, InvalidMessage }

公开函数

QDBusMessage()
QDBusMessage(const QDBusMessage &other)
~QDBusMessage()
QList<QVariant>arguments() const
boolautoStartService() const
QDBusMessagecreateErrorReply(const QString &name, const QString &msg) const
QDBusMessagecreateErrorReply(const QDBusError &error) const
QDBusMessagecreateErrorReply(QDBusError::ErrorType type, const QString &msg) const
QDBusMessagecreateReply(const QList<QVariant> &arguments = QList<QVariant>()) const
QDBusMessagecreateReply(const QVariant &argument) const
QStringerrorMessage() const
QStringerrorName() const
QStringinterface() const
boolisDelayedReply() const
boolisInteractiveAuthorizationAllowed() const
boolisReplyRequired() const
QStringmember() const
QStringpath() const
QStringservice() const
voidsetArguments(const QList<QVariant> &arguments)
voidsetAutoStartService(bool enable)
voidsetDelayedReply(bool enable) const
voidsetInteractiveAuthorizationAllowed(bool enable)
QStringsignature() const
voidswap(QDBusMessage &other)
QDBusMessage::MessageTypetype() const
QDBusMessage &operator<<(const QVariant &arg)
QDBusMessage &operator=(const QDBusMessage &other)

静态公开成员

QDBusMessagecreateError(const QString &name, const QString &msg)
QDBusMessagecreateError(const QDBusError &error)
QDBusMessagecreateError(QDBusError::ErrorType type, const QString &msg)
QDBusMessagecreateMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method)
QDBusMessagecreateSignal(const QString &path, const QString &interface, const QString &name)
QDBusMessagecreateTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name)

详细描述

该对象可以表示总线上可能出现的四种不同类型的信息(信息类型

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

此类型对象使用静态createError(),createMethodCall()和createSignal()函数创建。使用QDBusConnection::send()函数发送信息。

成员类型文档

枚举 QDBusMessage::MessageType

可能的信息类型

常量描述
QDBusMessage::MethodCallMessage1表示出站或入站方法调用的信息
QDBusMessage::SignalMessage4表示出站或入站信号发射的信息
QDBusMessage::ReplyMessage2表示方法调用返回值的信息
QDBusMessage::ErrorMessage3表示方法调用响应中错误条件的信息
QDBusMessage::InvalidMessage0无效信息:这永远不会设置在从D-Bus接收到的信息上

成员函数文档

QDBusMessage::QDBusMessage()

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

另请参阅createErrorcreateMethodCallcreateSignal

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

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

构建一个新的DBus消息,表示错误,具有给定的 namemsg

[静态] QDBusMessage QDBusMessage::createError(const QDBusError &error)

构建一个新的DBus消息,表示给定的 error

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

构建一个新的DBus消息,用于错误类型 type,并使用消息 msg。返回DBus消息。

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

构建一个新的DBus消息,表示错误回复消息,具有给定的 namemsg

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

构建一个新的DBus消息,表示从给定的 error 对象的错误回复消息。

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

构建一个新的DBus回复消息,用于错误类型 type,并使用消息 msg。返回DBus消息。

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

构建一个新的DBus消息,表示方法调用。方法调用始终通知其目的地址(servicepathinterfacemethod)。

当在点对点上下文中使用DBus(即在总线上)时,如果方法名称是唯一的,则可调用给定远程对象上的方法而不指定目的接口。但是,如果远程对象上有两个接口导出相同的方法名称,则结果是不确定的(可能调用其中之一或返回错误)。

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

The QDBusInterface 类提供了一个更简单的抽象,用于同步方法的调用。

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

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

构建一个新的 DBus 消息,代表一个回复,并带有指定的 arguments

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

构建一个新的 DBus 消息,代表一个回复,并带有指定的 argument

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

构建一个新的 DBus 消息,具有指定的 pathinterfacename,代表信号发射。

DBus 信号从一个应用程序发出,并被所有监听该信号的该接口的应用程序接收。

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

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

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

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

返回指示此消息是否应该收到回复的标志。这仅适用于方法调用消息:任何其他类型的消息都不能有回复,此函数将始终返回 false。

QString QDBusMessage::member() const

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

QString QDBusMessage::path() const

返回被发送消息的对象路径(在方法调用的情况下)或接收来自的对象路径(在信号的情况下)。

QString QDBusMessage::service() const

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

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

将要将它们通过 D-Bus 发送的参数设置到 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)

将此QDBusMessage实例与other交换。

QDBusMessage::MessageType QDBusMessage::type() const

返回消息类型。

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

将参数arg追加到要在方法调用或信号发射中发送的参数列表中。

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

复制由other给出的对象的全部内容。

注意:QDBusMessage对象是共享的。对复制品的修改将影响原始对象。有关更多信息,请参阅setDelayedReply()。

© 2024 Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。本提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款许可的。Qt及其相关标志是芬兰及其它全球国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。