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)
Qt: Как дождаться нескольких сигналов?