在 Qt 中,QThread
有两种常见的用法,分别对应不同的线程管理模型。这两种方法各有优缺点,适用于不同的场景:
1. 子类化 QThread(继承 QThread,重写 run() 方法)
这是传统的线程用法,类似于 Java 或 C++ 标准库中的线程模型。通过继承 QThread
并重写 run()
方法,将需要在子线程中执行的代码放在 run()
中。
步骤:
- 创建子类:继承
QThread
,重写run()
方法。 - 启动线程:实例化子类对象,调用
start()
启动线程。 - 线程生命周期:
run()
方法执行完毕后线程自动退出。
示例代码:
class WorkerThread : public QThread {
Q_OBJECT
protected:
void run() override {
// 子线程中执行的代码
for (int i = 0; i < 5; ++i) {
qDebug() << "Working in thread" << QThread::currentThreadId