擅长:python、mysql、java
<p>我最终实现了一个相当简单的helper类。它有一组用于等待信号,另一组用于接收信号。每个可等待的信号都连接到一个插槽。插槽将<code>sender()</code>添加到就绪集合,一旦集合大小匹配,就发出<code>ready</code>信号。在</p>
<p>如果有人感兴趣,我最后要做的是:</p>
<pre class="lang-python prettyprint-override"><code>from PySide.QtCore import QObject, Signal, Slot
class QMultiWait(QObject):
ready = Signal()
def __init__(self, parent=None):
super(QMultiWait, self).__init__(parent)
self._waitable = set()
self._waitready = set()
def addWaitableSignal(self, signal):
if signal not in self._waitable:
self._waitable.add(signal)
signal.connect(self._checkSignal)
@Slot()
def _checkSignal(self):
sender = self.sender()
self._waitready.add(sender)
if len(self._waitready) == len(self._waitable):
self.ready.emit()
def clear(self):
for signal in self._waitable:
signal.disconnect(self._checkSignal)
</code></pre>
<p><code>clear</code>函数几乎没有必要,但允许重用类实例。在</p>