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

QDBusPendingCallWatcher Class Reference
[QtDBus module]

该QDBusPendingCallWatcher类提供了一个便捷的途径等待异步回复More...

继承QObjectQDBusPendingCall

Methods

Qt Signals


Detailed Description

该QDBusPendingCallWatcher类提供了一个便捷的途径等待异步回复

该QDBusPendingCallWatcher提供finished( )信号,当回复到达将要发射。

它通常用于像下面的例子:

     QDBusPendingCall async = iface->asyncCall("RemoteMethod", value1, value2);
     QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this);

     QObject.connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
                      this, SLOT(callFinishedSlot(QDBusPendingCallWatcher*)));

注意,这是没有必要的,以保持原始QDBusPendingCall对象周围因为QDBusPendingCallWatcher从该类继承了。

通过上面的代码连接到插槽中可能出现类似下面的内容:

 void MyClass.callFinishedSlot(QDBusPendingCallWatcher *call)
 {
     QDBusPendingReply<QString, QByteArray> reply = *call;
     if (reply.isError()) {
         showError();
     } else {
         QString text = reply.argumentAt<0>();
         QByteArray data = reply.argumentAt<1>();
         showReply(text, data);
     }
     call->deleteLater();
 }

使用注意事项QDBusPendingReply验证在回复的参数类型。如果回复并不恰好包含两个参数(一个字符串和一个QByteArray) ,QDBusPendingReply.isError( )将返回True 。


Method Documentation

QDBusPendingCallWatcher.__init__ (self, QDBusPendingCall call, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

创建QDBusPendingCallWatcher对象,以观察在异步等待受理回复call并设置该对象的父到parent

bool QDBusPendingCallWatcher.isFinished (self)

返回True,如果待处理的呼叫完成处理和回复已经收到。

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

See also QDBusPendingReply.isFinished( ) 。

QDBusPendingCallWatcher.waitForFinished (self)

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

See also QDBusPendingReply.waitForFinished( ) 。


Qt Signal Documentation

void finished (QDBusPendingCallWatcher *)

这是该信号的默认超载。

这个信号被发射时挂起调用完成,其答复是可用的。该self参数是一个指向对象本身,通过为方便起见,这样的插槽可以访问属性,并确定答复的内容。




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