PySide6.QtDBus.QDBusContext¶
- 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()¶
- Return type:
布尔
如果我们正在处理一个D-Bus调用,则返回
true。如果此函数返回true,则此类的其余函数可用。当此函数返回
false时,访问这些函数是未定义的,并可能导致崩溃。- connection()¶
- Return type:
返回接收此调用的连接。
- isDelayedReply()¶
- Return type:
布尔
如果此调用将有延迟回复,则返回
true。另请参阅
- message()¶
- Return type:
返回生成此调用的消息。
这是一个重载函数。
向调用者发送一个错误
type作为回复。可选的msg参数是解释失败原因的人类可读文本。如果发送了错误,Qt D-Bus 将忽略来自被调用槽的返回值和任何输出参数。
- sendErrorReply(name[, msg=""])
- Parameters:
name – str
msg – str
发送一个错误
name作为对调用者的回复。可选的msg参数是一个人类可读的文本,用于解释失败的原因。如果发送了错误,Qt D-Bus 将忽略来自被调用槽的返回值和任何输出参数。
- setDelayedReply(enable)¶
- Parameters:
enable – 布尔值
设置此调用是否会有延迟回复。
如果
enable为 false,Qt D-Bus 将在被调用的槽返回时自动生成一个回复给调用者,如果需要的话。如果
enable为 true,Qt D-Bus 将不会生成自动回复。它还将忽略插槽的返回值和任何输出参数。相反,被调用的对象负责存储传入的消息,并在稍后发送回复或错误。未能发送回复将导致D-Bus自动生成超时错误。
另请参阅