QT 实现子线程执行不同的函数
时间: 2024-09-18 12:11:26 浏览: 35
在Qt中,你可以使用`QThread`类来实现子线程执行不同的任务。首先,创建一个自定义的类,继承自`QObject`并指定它作为`QThread`的派生类,比如:
```cpp
class MyWorker : public QObject, public QRunnable {
Q_OBJECT
public:
explicit MyWorker(QObject* parent = nullptr) : QRunnable(parent) {}
void run() override {
// 这里是你想在子线程中执行的具体函数
if (isFunctionA()) {
functionA();
} else if (isFunctionB()) {
functionB();
}
}
private:
bool isFunctionA(); // 函数A的判断逻辑
void functionA(); // 函数A的实现
bool isFunctionB(); // 函数B的判断逻辑
void functionB(); // 函数B的实现
};
```
然后,在主线程中,你可以创建这个`MyWorker`的实例,并通过`start()`方法启动子线程:
```cpp
// 在主线程中
MyWorker worker;
worker.moveToThread(&thread); // 将工作线程移到新的线程中
connect(&thread, &QThread::started, &worker, &QRunnable::run); // 连接线程开始信号到run函数
connect(&thread, &QThread::finished, &worker, &QObject::deleteLater); // 线程结束时删除工作线程对象
thread.start(); // 启动子线程
```
这样,`functionA()`或`functionB()`将在子线程中异步执行,不会阻塞主线程。