QtConcurrent::run后面带lamdar表达式怎么用
时间: 2024-09-28 20:03:38 浏览: 29
QtConcurrent::run是一个来自Qt库中的函数,用于异步执行提供的Lambda表达式或者Callable对象。它将任务提交到后台线程池进行处理,无需阻塞主线程。以下是基本用法:
```cpp
#include <QObject>
#include <QThreadPool>
#include <QtConcurrent>
class MyObject : public QObject
{
public slots:
void startTask()
{
// 创建一个Lambda表达式作为任务
auto task = [this] {
// 你的任务代码,可以访问QObject成员变量
qDebug() << "Running task in background thread";
};
// 使用QtConcurrent::run执行任务
QThreadPool::globalInstance()->start(task);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyObject obj;
obj.startTask();
return app.exec();
}
```
在这个例子中,`startTask`方法中,我们创建了一个Lambda表达式,并通过`QtConcurrent::run`将其发送到全局线程池。当这个任务开始执行时,不会立即阻塞当前的主线程。
阅读全文