Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QDBusPendingReply Class Reference
[QtDBus module]

该QDBusPendingReply类包含的答复异步方法调用More...

继承QDBusPendingCall

Methods


Detailed Description

该QDBusPendingReply类包含的答复异步方法调用

该QDBusPendingReply是一个模板类,多达8个模板参数。这些参数是将被用于提取的答复的数据的内容的类型。

这个类是类似的功能,QDBusReply,但有两个重要的区别:

用在哪里QDBusReply你可以这样写:

 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());

与QDBusPendingReply ,等效代码(包括您的答复阻塞等待)将是:

     QDBusPendingReply<QString> reply = interface->asyncCall("RemoteMethod");
     reply.waitForFinished();
     if (reply.isError())
         // call failed. Show an error condition.
         showError(reply.error());
     else
         // use the returned value
         useValue(reply.value());

对于方法调用具有多个输出参数,用QDBusReply,你可以这样写:

 QString reply = interface->call("RemoteMethod");

而与QDBusPendingReply ,所有的输出参数应该是模板参数:

     QDBusPendingReply<bool, QString> reply = interface->asyncCall("RemoteMethod");
     reply.waitForFinished();
     if (!reply.isError()) {
         if (reply.argumentAt<0>())
             showSuccess(reply.argumentAt<1>());
         else
             showFailure(reply.argumentAt<1>());
     }

QDBusPendingReply对象可以关联QDBusPendingCallWatcher对象,它发出的信号,当回复到达。


Method Documentation

QDBusPendingReply.__init__ (self)

创建一个空的QDBusPendingReply对象。而不设定QDBusPendingCall反对此回复,QDBusPendingReply什么都做不了。所有的函数都返回自己的失败值。

QDBusPendingReply.__init__ (self, QDBusPendingReply other)

创建的副本other QDBusPendingReply对象。一样QDBusPendingCallQDBusPendingCallWatcher,这QDBusPendingReply对象将共享同一个悬而未决的呼叫参考。所有副本共享相同的返回值。

QDBusPendingReply.__init__ (self, QDBusPendingCall call)

创建QDBusPendingReply对象,将采取它的内容从call挂起的异步调用。这QDBusPendingReply对象将共享相同的未决调用作为参考call

QDBusPendingReply.__init__ (self, QDBusMessage reply)

创建QDBusPendingReply对象,将采取它的内容从消息message。在这种情况下,该对象将是已经在其成品状态和回复的内容将是可访问的。

See also isFinished( ) 。

QVariant QDBusPendingReply.argumentAt (self, int index)

返回参数的位置index在回复的内容。如果答复不具有的许多元素,这个函数的返回值是不确定的(可能会导致一个断言失败) ,所以要确认处理完毕,并答复是否有效是很重要的。

QDBusError QDBusPendingReply.error (self)

检索应答消息的错误内容,如果它已完成处理。如果回复邮件尚未完成处理,或者如果它包含一个正常的回复讯息(非错误) ,这个函数返回一个无效的QDBusError

bool QDBusPendingReply.isError (self)

返回True如果应答包含一个错误信息,如果其包含一个正常的方法答复。

如果挂起调用还没有完成处理,该函数也返回True 。

bool QDBusPendingReply.isFinished (self)

返回True,如果待处理的呼叫完成处理和回复已经收到。如果这个函数返回True,则isError( )error()和reply( )方法应该返回有效信息。

注意,这个函数只有改变状态,如果你调用waitForFinished( ),或者如果外部D-Bus的事件发生,这在一般如果返回到事件循环执行只发生。

See also QDBusPendingCallWatcher.isFinished( ) 。

bool QDBusPendingReply.isValid (self)

返回True如果应答包含一个正常的应答消息,如果其包含别的。

如果挂起调用还没有完成处理,这个函数返回False 。

QDBusMessage QDBusPendingReply.reply (self)

检索收到的异步调用的回复消息被发送,如果它已经完成处理。如果挂起调用还没有完成,这个函数返回一个QDBusMessage类型QDBusMessage.InvalidMessage

之后,它已经完成处理,消息类型要么是一个错误消息或一个正常的方法回复消息。

object QDBusPendingReply.value (self, object type = None)

返回此答复的第一个参数,强制转换为类型T1(这个类的第一个模板参数) 。这等效于调用argumentAt \u003c0\u003e () 。

这个功能是为了方便,配套QDBusReply.value()函数。

需要注意的是,如果回答没有到达,这个函数会导致调用线程阻塞,直到答复处理。

QDBusPendingReply.waitForFinished (self)

挂起调用线程,直到收到回复和处理的执行。在此之后函数返回,isFinished( )应该返回True,表示该回复的内容是准备进行处理。

See also QDBusPendingCallWatcher.waitForFinished( ) 。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5