gpt4 book ai didi

c++ - 等待多个对象发出信号

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:04 24 4
gpt4 key购买 nike

我知道如何等待单个对象完成,使用

QEventLoop eventLoop;
connect(&obj, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec();

但是现在我有几个我想并行“运行”的对象,所以我需要等到所有对象都发送了它们的 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;
};

关于c++ - 等待多个对象发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com