Qt-如何在不显式实现线程的情况下同时运行两个插槽

时间:2016-08-31 13:16:36

标签: c++ multithreading visual-studio qt

我有两个连接到同一信号的Qt插槽。

我必须并行运行它们而不使用Qt多线程。

我搜索了Qt是否提供了一个解决方案来暗示,但我没有找到。

在Qt中有没有解决办法?

1 个答案:

答案 0 :(得分:4)

您需要将信号连接到slot()并使用QtConurrent完成所有工作

#include <QtConcurrent>
#include <QFuture>
...
void MyClass::slot()
{
    QFuture <void> future1, future2;
    future1 = QtConcurrent::run(this,&MyClass::slot1);
    future2 = QtConcurrent::run(this,&MyClass::slot2);
    future1.waitForFinished();
    future2.waitForFinished();
}

您需要使用并发模块。在.pro文件中,添加:

QT += concurrent