用QT写一段代码使主线程等待子线程读取完成后再继续操作
时间: 2024-01-29 19:01:55 浏览: 98
以下是一个示例代码,可以实现主线程等待子线程读取完成后再继续操作:
```c++
#include <QCoreApplication>
#include <QThread>
#include <QDebug>
// 子线程类
class WorkerThread : public QThread {
public:
void run() {
qDebug() << "子线程开始读取数据...";
// 模拟读取数据的过程
sleep(3);
qDebug() << "子线程读取数据完成!";
// 发送完成信号
emit workFinished();
}
signals:
void workFinished();
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建子线程
WorkerThread workerThread;
// 当子线程完成工作时,继续主线程的操作
QObject::connect(&workerThread, SIGNAL(workFinished()), &a, SLOT(quit()));
qDebug() << "主线程开始等待子线程...";
// 启动子线程
workerThread.start();
// 等待子线程完成工作
a.exec();
qDebug() << "主线程继续执行!";
return 0;
}
```
当主线程运行到 `a.exec()` 时,会等待子线程发送完成信号,然后才会继续执行,输出 "主线程继续执行!"。
阅读全文