PySide6.QtDBus.QDBusContext

class QDBusContext

QDBusContext 类允许槽函数确定调用的 D-Bus 上下文。更多

概要

方法

注意

本文档可能包含从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()

该示例说明了两种典型用途,即发送错误回复和延迟回复。

注意:不要同时子类化 QDBusContextQDBusAbstractAdaptorQDBusContext 应该出现在真实对象中,而不是适配器中。如果需要在适配器代码中确定上下文,请使用公共继承并通过 QObject::parent() 访问函数。

__init__()

构造一个空的 QDBusContext

calledFromDBus()
Return type:

布尔

如果我们正在处理一个D-Bus调用,则返回true。如果此函数返回true,则此类的其余函数可用。

当此函数返回false时,访问这些函数是未定义的,并可能导致崩溃。

connection()
Return type:

QDBusConnection

返回接收此调用的连接。

isDelayedReply()
Return type:

布尔

如果此调用将有延迟回复,则返回 true

另请参阅

setDelayedReply()

message()
Return type:

QDBusMessage

返回生成此调用的消息。

sendErrorReply(type[, msg=""])
Parameters:

这是一个重载函数。

向调用者发送一个错误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自动生成超时错误。

另请参阅

isDelayedReply()