- class QDBusContext#
QDBusContext
类允许槽来确定调用的D-Bus上下文。 更多…摘要#
方法#
def
__init__()
def
calledFromDBus()
def
connection()
def
isDelayedReply()
def
message()
def
sendErrorReply()
注意
本文档可能包含从 C++ 自动转换为 Python 的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译存在错误,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式告诉我们
详细描述#
警告
本节包含从 C++ 自动转换为 Python 的代码片段,可能包含错误。
当一个对象因信号传递或远程方法调用而调用槽时,有时需要知道此发生的上下文。特别是,如果槽需要在稍后再发送回复或需要错误回复,则需要上下文。
QDBusContext
类是访问上下文的另一种方法,而不是修改由 Qt D-Bus XML 编译器 (qdbusxml2cpp) 生成的代码。QDBusContext
通过从使用registerObject()
导出的对象中继承来使用。以下示例说明了用法class MyObject(QObject, protected QDBusContext Q_OBJECT conn = QDBusConnection() msg = QDBusMessage() #... # protected slots def process(): # public slots def methodWithError(): methodWithDelayedReply = QString() def methodWithError(self): sendErrorReply(QDBusError.NotSupported, "The method call 'methodWithError()' is not supported") def methodWithDelayedReply(self): conn = connection() msg = message() setDelayedReply(True) QMetaObject::invokeMethod(self.process, Qt::QueuedConnection) return QString()
示例说明了两种典型用途,一种是发送错误回复,另一种是延迟回复。
注意:不要同时继承
QDBusContext
和QDBusAbstractAdaptor
。QDBusContext
应出现在真实对象中,而不是适配器中。如果适配器代码需要确定上下文,请使用公共继承并通过 QObject::parent() 访问函数。- __init__()#
构造一个空的
QDBusContext
。- calledFromDBus()#
- 返回类型::
bool
如果我们在处理 D-Bus 调用,则返回
true
。如果这个函数返回true
,则在本类的其余函数都是可用的。当此函数返回
false
时访问这些函数是未定义的,并可能导致崩溃。- connection()#
- 返回类型::
返回接收此调用连接。
- isDelayedReply()#
- 返回类型::
bool
如果此调用将会有延迟回复,则返回
true
。另请参阅
- message()#
- 返回类型::
返回生成此调用的消息。
这是一个重载函数。
发送一个错误类型作为回复给调用者。可选的
msg
参数是解释失败的可读文本。如果发送错误,Qt D-Bus 将会忽略返回值和任何调用的槽的输出参数。
- sendErrorReply(name[, msg=""])
- 参数:
name – 字符串
msg – 字符串
发送一个错误名称作为回复给调用者。可选的
msg
参数是解释失败的可读文本。如果发送错误,Qt D-Bus 将会忽略返回值和任何调用的槽的输出参数。
- setDelayedReply(enable)#
- 参数:
enable – 布尔值
设置这个调用是否有延迟回复。
如果
enable
是 false,Qt D-Bus 将会在调用槽返回后立即自动向调用者生成一个回复,如果需要的话。如果
enable
是 true,Qt D-Bus 将不会生成自动回复。它也会忽略槽的返回值和任何输出参数。相反,被调用对象将负责存储传入的消息,并在稍后发送一个回复或错误。未能发送回复将导致 D-Bus 生成一个自动超时错误。
另请参阅