Qt-如何同时运行两个插槽而不显式实现线程

Qt- how to run two slots simultaneously without explicitly implementing threads

本文关键字:插槽 线程 实现 两个 何同时 运行 Qt-      更新时间:2023-10-16

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

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

我搜索了Qt是否提供了隐式解决方案,但我没有找到。

是否有任何解决方案做到这一点在Qt?

您需要将信号连接到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