QDBusReply Class
template <typename T> class QDBusReplyQDBusReply 类用于存储对远程对象方法调用的响应。更多内容...
| 头文件: | #include <QDBusReply> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
公共函数
| QDBusReply(const QDBusError &error = QDBusError()) | |
| QDBusReply(const QDBusMessage &reply) | |
| QDBusReply(const QDBusPendingCall &pcall) | |
| QDBusReply(const QDBusPendingReply<T> &reply) | |
| const QDBusError & | error() const |
| bool | isValid() const |
| QDBusReply<T>::Type | value() const |
| operator QDBusReply<T>::Type() const | |
| QDBusReply<T> & | operator=(const QDBusError &dbusError) |
| QDBusReply<T> & | operator=(const QDBusMessage &reply) |
| QDBusReply<T> & | operator=(const QDBusPendingCall &pcall) |
详细说明
QDBusReply<T> 是一个模板类,其中T 指定了预期的返回类型。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() 函数来测试响应是否成功。
另请参阅 QDBusMessage 和QDBusInterface 。
成员函数文档
QDBusReply::QDBusReply(const QDBusError &error = QDBusError())
根据error 提供的D-Bus错误代码构建一条错误响应。
QDBusReply::QDBusReply(const QDBusMessage &reply)
根据响应消息reply 自动构建一个QDBusReply对象,如果该响应为成功响应,则从中提取第一个返回值。
QDBusReply::QDBusReply(const QDBusPendingCall &pcall)
根据异步待处理调用pcall 自动构建一个QDBusReply对象。如果调用尚未完成,QDBusReply将调用QDBusPendingCall::waitForFinished(),这是一项阻塞操作。
如果返回类型为 patch,QDBusReply 将从响应中提取第一个返回参数。
QDBusReply::QDBusReply(const QDBusPendingReply<T> &reply)
根据待处理的回复消息reply 构建一个 QDBusReply 对象。
const QDBusError &QDBusReply::error() const
返回远程函数调用返回的错误代码。如果远程调用未返回错误(即调用成功),则返回的QDBusError 对象将不是有效的错误代码(QDBusError::isValid()将返回false)。
另请参阅 isValid()。
bool QDBusReply::isValid() const
如果未发生错误,则返回true ;否则,返回false 。
另请参阅 error()。
QDBusReply<T>::Type QDBusReply::value() const
返回远程函数调用的返回值。如果远程调用因错误而返回,则该函数的返回值未定义,且可能无法与有效的返回值区分开来。
如果远程调用返回void ,则此函数不可用。
QDBusReply::operator QDBusReply<T>::Type() const
返回与value()相同的结果。
如果远程调用返回void ,则该函数不可用。
QDBusReply<T> &QDBusReply::operator=(const QDBusError &dbusError)
将此对象设置为包含由dbusError 返回的错误代码。之后可通过error()访问该错误代码。
QDBusReply<T> &QDBusReply::operator=(const QDBusMessage &reply)
使该对象包含reply 消息。如果reply 是一个错误消息,则该函数会将错误代码和错误消息复制到该对象中
如果 `reply ` 是一个标准回复消息且包含至少一个参数,只要该参数的类型正确,就会被复制到该对象中。如果该参数的类型与该 `QDBusError ` 对象的类型不一致,则本函数会设置一个错误代码,以指示类型不匹配。
QDBusReply<T> &QDBusReply::operator=(const QDBusPendingCall &pcall)
使该对象包含由待处理的异步调用pcall 指定的响应。如果调用尚未完成,该函数将调用 QDBusPendingCall::waitForFinished(),并阻塞直至收到响应。
如果 `pcall ` 以错误消息结束,则本函数将把错误代码和错误消息复制到该对象中
如果 `pcall ` 以标准回复消息结束且包含至少一个参数,只要该参数类型正确,就会被复制到该对象中。如果该参数的类型与该 `QDBusError ` 对象的类型不一致,则本函数会设置一个指示类型不匹配的错误代码。
© 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.