簡體   English   中英

等待幾個物體發出信號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM