qt c++实现创建线程
时间: 2024-08-15 12:01:49 浏览: 48
在Qt C++中,创建线程通常使用`QThread`类。以下是一个简单的步骤来创建和启动一个新的线程:
1. 首先,在头文件中包含所需的库:
```cpp
#include <QObject>
#include <QThread>
```
2. 定义一个派生自QObject的类,并重写构造函数,将QThread作为成员并设置为内部状态:
```cpp
class MyWorker : public QObject {
public:
explicit MyWorker(QObject *parent = nullptr)
: QObject(parent), workerThread(this) {
workerThread.start(); // 启动新线程
}
private slots:
void doWork() {
// 这里编写你要在线程中执行的任务
// 示例:for (int i = 0; i < 10; ++i)
// qDebug() << "Doing work in thread: " << i;
}
signals:
void workFinished();
private:
QThread workerThread; // 新建的线程
};
```
3. 然后,你可以创建`MyWorker`对象,并连接它的信号到主窗口或其它部件的槽函数,当工作完成时,会触发信号`workFinished()`:
```cpp
// 主程序中
MyWorker *worker = new MyWorker();
connect(worker, &MyWorker::workFinished, this, []() {
// 工作完成后的处理
qDebug() << "Work finished";
});
```
4. 最后,确保主线程不会立即结束,否则新线程也将终止:
```cpp
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// ... 其他初始化代码 ...
// 让主线程等待直到所有任务完成
return app.exec();
}
```
阅读全文