QDBusReply 类

template <typename T> class QDBusReply

QDBusReply 类用于存储远程对象方法调用的响应。 更多...

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

公共函数

QDBusReply(const QDBusMessage &reply)
QDBusReply(const QDBusPendingCall &pcall)
QDBusReply(const QDBusPendingReply<T> &reply)
QDBusReply(const QDBusError &error = QDBusError())
QDBusReply(const QDBusReply<T> &other)
const QDBusError &error() const
const QDBusError &error()
boolisValid() const
QDBusReply<T>::Typevalue() const
QDBusReply<T>::Typeoperator QDBusReply<T>::Type() const
QDBusReply<T> &operator=(const QDBusMessage &reply)
QDBusReply<T> &operator=(const QDBusPendingCall &pcall)
QDBusReply<T> &operator=(const QDBusError &dbusError)
QDBusReply<T> &operator=(const QDBusReply<T> &other)

详细描述

QDBusReply 对象是表示方法调用响应的 QDBusMessage 对象的子集。它只包含第一个输出参数或错误代码,并由派生自 QDBusInterface 的类使用,以便允许将错误代码作为函数的返回参数返回。

它可以按照以下方式使用

QDBusReply<QString> reply = interface->call("RemoteMethod");
if (reply.isValid())
    // use the returned value
    useValue(reply.value());
else
    // call failed. Show an error condition.
    showError(reply.error());

如果远程方法调用不可能失败,您可以跳过错误检查

reply = interface->call("RemoteMethod");

但是,如果在这些条件下失败,QDBusReply<T>::value() 返回的值是一个默认构造的值。它可能与有效返回值无法区分。

QDBusReply 对象用于远程调用没有输出参数或返回值(即它们具有“void”返回类型)。使用 isValid() 函数来测试回复是否成功。

另请参阅 QDBusMessageQDBusInterface

成员函数文档

QDBusReply::QDBusReply(const QDBusMessage &reply)

从回复消息 reply 中自动构建一个 QDBusReply 对象,如果它是成功的回复,则从中提取第一个返回值。

QDBusReply::QDBusReply(const QDBusPendingCall &pcall)

从异步挂起调用 pcall 自动构建一个 QDBusReply 对象。如果调用尚未完成,QDBusReply 将调用 QDBusPendingCall::waitForFinished(),这是一个阻塞操作。

如果返回类型补丁,QDBusReply 将从回复中提取第一个返回参数。

QDBusReply::QDBusReply(const QDBusPendingReply<T> &reply)

从挂起的回复消息 reply 构建一个 QDBusReply 对象。

QDBusReply::QDBusReply(const QDBusError &error = QDBusError())

从一个提供的 D-Bus 错误代码 error 构建一个错误回复。

QDBusReply::QDBusReply(const QDBusReply<T> &other)

构建 other 的副本。

const QDBusError &QDBusReply::error() const

返回从远程函数调用返回的错误代码。如果远程调用没有返回错误(即,如果调用成功),则返回的 QDBusError 对象将不是一个有效的错误代码(QDBusError::isValid() 将返回 false)。

另请参阅 isValid

const QDBusError &QDBusReply::error()

这是一个重载函数。

bool QDBusReply::isValid() const

如果没有发生错误,则返回 true;否则返回 false

另请参阅 error

QDBusReply<T>::Type QDBusReply::value() const

返回远程函数调用的返回值。如果远程调用返回错误,此函数的返回值是未定义的,可能无法与有效的返回值区分。

如果远程调用返回 void,则此函数不可用。

QDBusReply<T>::Type QDBusReply::operator QDBusReply<T>::Type() const

返回与 value 相同的内容。

如果远程调用返回 void,则此函数不可用。

QDBusReply<T> &QDBusReply::operator=(const QDBusMessage &reply)

使此对象包含 reply 消息。如果 reply 是错误消息,此函数将复制错误代码和消息到该对象。

如果 reply 是标准回复消息,并且包含至少一个参数,只要类型正确,它将复制到该对象中。如果它与该 QDBusError 对象的类型不匹配,则此函数将设置一个指示类型不匹配的错误代码。

QDBusReply<T> &QDBusReply::operator=(const QDBusPendingCall &pcall)

将此对象包含由挂起的异步调用 pcall 指定的回复。如果调用尚未完成,此函数将调用 QDBusPendingCall::waitForFinished() 以阻塞,直到收到回复。

如果 pcall 以错误消息结束,则此函数将错误代码和消息复制到该对象中

如果 pcall 以标准回复消息结束并至少包含一个参数,并且只要它是正确的类型,它将复制到此对象中。如果不是与此 QDBusError 对象相同的类型,此函数将设置一个表示类型不匹配的错误代码。

QDBusReply<T> &QDBusReply::operator=(const QDBusError &dbusError)

将此对象设置为包含由 dbusError 给出的错误代码。您以后可以使用 error() 访问它。

QDBusReply<T> &QDBusReply::operator=(const QDBusReply<T> &other)

使此对象成为对象 other 的副本。

© 2024 Qt公司有限公司。本文件中的文档贡献权归各自所有者。本文件中的文档是根据自由软件基金会发布并由自由软件基金会出版的GNU自由文档许可证版本1.3许可的。Qt及其相关标志是芬兰及其它国家的Qt公司商标。所有其他商标均归各自所有者所有。