[英]Wait for several objects to emit a signal
我知道如何等待單個對象完成,使用
QEventLoop eventLoop;
connect(&obj, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec();
但是現在我有幾個要並行運行的對象,因此我需要等到所有對象都發送了finished()
SIGNAL finished()
信號。
這就像WaitForMultipleObjects WinApi函數的信號和插槽版本。
我應該怎么做呢?
我將完成的信號連接到一個類,該類對接收到的信號數進行計數,並在達到預期計數時發出quit()。
像這樣:
class EmitIfCountReached : public QObject
{
Q_OBJECT
public:
EmitIfCountReached( int expectedCount, QObject* parent = nullptr) : m_expected(expectedCount), m_count(0), QObject(parent) {}
signals:
void finished();
protected slots:
void increment() {
m_count++;
if (m_count >= m_expected) {
emit finished();
}
}
protected:
int m_count;
int m_expected;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.