QDBusContext 类
QDBusContext 类允许槽确定调用的 D-Bus 上下文。 更多...
头文件 | #include <QDBusContext> |
CMake | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
qmake | QT += dbus |
公共函数
QDBusContext() | |
~QDBusContext() | |
bool | calledFromDBus() const |
QDBusConnection | connection() const |
bool | isDelayedReply() const |
const QDBusMessage & | message() const |
void | sendErrorReply(const QString &name, const QString &msg = QString()) const |
void | sendErrorReply(QDBusError::ErrorType type, const QString &msg = QString()) const |
void | setDelayedReply(bool enable) const |
详细说明
当一个槽由于信号传递或远程方法调用在一个对象中被调用时,有时需要知道该事件发生的上下文。特别是,如果槽确定它想要在稍后的机会发送回复,或者它想要回复错误,则需要上下文。
QDBusContext 类是访问上下文的替代方法,不涉及修改由 Qt D-Bus XML 编译器(qdbusxml2cpp)生成的代码。
QDBusContext 通过从 QDBusConnection 的注册对象使用 QDBusConnection::registerObject() 方法导出对象而被使用。以下示例说明了使用方法
class MyObject: public QObject, protected QDBusContext { Q_OBJECT QDBusConnection conn; QDBusMessage msg; //... protected slots: void process(); public slots: void methodWithError(); QString methodWithDelayedReply(); }; void MyObject::methodWithError() { sendErrorReply(QDBusError::NotSupported, "The method call 'methodWithError()' is not supported"); } QString MyObject::methodWithDelayedReply() { conn = connection(); msg = message(); setDelayedReply(true); QMetaObject::invokeMethod(this, &MyObject::process, Qt::QueuedConnection); return QString(); }
示例说明了两种典型用途,即发送错误回复和延迟回复。
注意:同时不得派生 QDBusContext 和 QDBusAbstractAdaptor。QDBusContext 应出现在真实对象中,而不是适配器中。如果从适配器代码中确定上下文是必要的,则使用公共继承并通过 QObject::parent() 方法访问函数。
成员函数说明
QDBusContext::QDBusContext()
构造一个空的 QDBusContext。
[noexcept]
QDBusContext::~QDBusContext()
一个空的析构函数。
bool QDBusContext::calledFromDBus() const
如果正在处理 D-Bus 调用,返回 true
。如果该函数返回 true
,则此类中的其余函数可用。
在此函数返回 false
时访问这些函数是未定义的,可能导致崩溃。
QDBusConnection QDBusContext::connection() const
返回接收此调用的连接。
bool QDBusContext::isDelayedReply() const
如果此调用将具有延迟回复,则返回 true
。
另请参阅 setDelayedReply。
const QDBusMessage &QDBusContext::message() const
返回生成此调用的消息。
void QDBusContext::sendErrorReply(const QString &name, const QString &msg = QString()) const
向调用者发送错误 name 作为回复。可选的 msg 参数是一个可读性好的文本,用于解释失败原因。
如果发送了错误,Qt D-Bus 将忽略返回值和任何输出参数。
void QDBusContext::sendErrorReply(QDBusError::ErrorType type, const QString &msg = QString()) const
这是一个重载函数。
向调用者发送错误 type 作为回复。可选的 msg 参数是一个可读性好的文本,用于解释失败原因。
如果发送了错误,Qt D-Bus 将忽略返回值和任何输出参数。
void QDBusContext::setDelayedReply(bool enable) const
设置此调用是否具有延迟回复。
如果 enable 为 false,Qt D-Bus 将在调用槽返回时自动生成对调用者的回复(如果需要)。
如果 enable 为 true,Qt D-Bus 不会生成自动回复。它还将忽略槽的返回值和任何输出参数。相反,被调用的对象负责存储传入的消息并在稍后发送一个回复或错误。
未能发送回复将导致 D-Bus 自动生成超时错误。
另请参阅 isDelayedReply。
© 2024 Qt 公司。文档贡献包含在内的版权为各自的拥有者所有。本文件中的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt和相应的商标是芬兰的Qt公司及其全球子公司和关联公司的注册商标。所有其他商标均为各自所有者的财产。