Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QDBusPendingReply类包含的答复异步方法调用More...
该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对象,它发出的信号,当回复到达。
创建一个空的QDBusPendingReply对象。而不设定QDBusPendingCall反对此回复,QDBusPendingReply什么都做不了。所有的函数都返回自己的失败值。
创建的副本other QDBusPendingReply对象。一样QDBusPendingCall和QDBusPendingCallWatcher,这QDBusPendingReply对象将共享同一个悬而未决的呼叫参考。所有副本共享相同的返回值。
创建QDBusPendingReply对象,将采取它的内容从call挂起的异步调用。这QDBusPendingReply对象将共享相同的未决调用作为参考call。
创建QDBusPendingReply对象,将采取它的内容从消息message。在这种情况下,该对象将是已经在其成品状态和回复的内容将是可访问的。
See also isFinished( ) 。
返回参数的位置index在回复的内容。如果答复不具有的许多元素,这个函数的返回值是不确定的(可能会导致一个断言失败) ,所以要确认处理完毕,并答复是否有效是很重要的。
检索应答消息的错误内容,如果它已完成处理。如果回复邮件尚未完成处理,或者如果它包含一个正常的回复讯息(非错误) ,这个函数返回一个无效的QDBusError。
返回True如果应答包含一个错误信息,如果其包含一个正常的方法答复。
如果挂起调用还没有完成处理,该函数也返回True 。
返回True,如果待处理的呼叫完成处理和回复已经收到。如果这个函数返回True,则isError( )error()和reply( )方法应该返回有效信息。
注意,这个函数只有改变状态,如果你调用waitForFinished( ),或者如果外部D-Bus的事件发生,这在一般如果返回到事件循环执行只发生。
See also QDBusPendingCallWatcher.isFinished( ) 。
返回True如果应答包含一个正常的应答消息,如果其包含别的。
如果挂起调用还没有完成处理,这个函数返回False 。
检索收到的异步调用的回复消息被发送,如果它已经完成处理。如果挂起调用还没有完成,这个函数返回一个QDBusMessage类型QDBusMessage.InvalidMessage。
之后,它已经完成处理,消息类型要么是一个错误消息或一个正常的方法回复消息。
返回此答复的第一个参数,强制转换为类型T1(这个类的第一个模板参数) 。这等效于调用argumentAt \u003c0\u003e () 。
这个功能是为了方便,配套QDBusReply.value()函数。
需要注意的是,如果回答没有到达,这个函数会导致调用线程阻塞,直到答复处理。
挂起调用线程,直到收到回复和处理的执行。在此之后函数返回,isFinished( )应该返回True,表示该回复的内容是准备进行处理。
See also QDBusPendingCallWatcher.waitForFinished( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |