qt多线程写法
时间: 2023-07-08 17:15:48 浏览: 109
在Qt中,可以使用QtConcurrent框架来实现多线程编程。下面是一个简单的示例,展示了如何使用QtConcurrent框架在主线程和后台线程之间传递数据。
```
#include <QtCore>
#include <QtConcurrent>
void process(QString data)
{
// 在后台线程中处理数据
qDebug() << "Processing data in thread" << QThread::currentThreadId() << ": " << data;
QThread::sleep(1); // 模拟耗时操作
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 在主线程中生成数据
QStringList data;
data << "data1" << "data2" << "data3";
// 使用QtConcurrent框架在后台线程中处理数据
QFuture<void> future = QtConcurrent::map(data, &process);
// 等待处理完成
future.waitForFinished();
return a.exec();
}
```
在上面的示例中,我们首先在主线程中生成了一些数据,然后使用QtConcurrent::map函数将数据传递到后台线程中进行处理。在process函数中,我们模拟了一些耗时操作。最后,我们使用QFuture::waitForFinished函数等待后台线程处理完成。
阅读全文