QT中如何让5个循环同时进行
时间: 2024-09-30 11:11:18 浏览: 24
在Qt中,如果你想要让五个独立的线程或者循环同时运行,你可以使用QThread类或者QObject的 moveToThread() 和 start() 方法来创建并启动新线程。这里是一个基本的例子,展示了如何创建五个并发执行的线程:
```cpp
#include <QApplication>
#include <QThread>
class Worker : public QObject
{
public slots:
void doWork(int id) {
qDebug() << "Worker " << id << " started";
// 这里是你需要执行的任务
QThread::sleep(1000); // 模拟耗时操作
qDebug() << "Worker " << id << " finished";
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建五个工作线程
Worker worker1, worker2, worker3, worker4, worker5;
for (int i = 0; i < 5; ++i) {
QThread* thread = new QThread();
Worker* currentWorker = &worker1 + i; // 使用指针偏移获取每个worker
currentWorker->moveToThread(thread); // 将worker移动到新的线程中
connect(thread, &QThread::started, currentWorker, &Worker::doWork, Qt::QueuedConnection, [id=i] { currentWorker->doWork(id); }); // 设置信号连接
connect(thread, &QThread::finished, currentWorker, &QObject::deleteLater); // 线程结束时删除worker
thread->start(); // 启动线程
}
return app.exec();
}
```
在这个例子中,每个Worker对象都在自己的线程上运行`doWork()`函数。注意我们使用了`Qt::QueuedConnection`确保槽函数在主线程中安全地被调用。
阅读全文