qt多线程官方示例代码
时间: 2023-07-21 15:12:41 浏览: 95
下面是Qt官方文档中提供的一个简单的多线程示例代码,使用QThread类和moveToThread()函数实现:
```cpp
#include <QThread>
#include <QDebug>
class Worker : public QObject
{
Q_OBJECT
public slots:
void doWork() {
for (int i = 0; i < 100; ++i) {
qDebug() << "Working" << i;
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Worker worker;
QThread thread;
worker.moveToThread(&thread);
QObject::connect(&thread, &QThread::started, &worker, &Worker::doWork);
thread.start();
return a.exec();
}
#include "main.moc"
```
在这个例子中,我们创建了一个名为Worker的QObject子类,并在其中定义了一个名为doWork()的槽函数。在main函数中,我们创建了一个Worker对象worker,并将其移动到一个名为thread的QThread对象中。我们还使用QObject::connect()函数将thread的started()信号与worker的doWork()槽函数连接起来,这意味着当线程启动时,doWork()槽函数将被调用。
最后,我们调用thread的start()函数启动线程,并让程序进入Qt主事件循环(a.exec())。在doWork()函数中,我们简单地打印出了一些文本,以模拟一个耗时的任务。注意,由于doWork()函数运行在一个单独的线程中,它可以与主线程并行执行,而不会阻塞主线程。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)