您好,下面是一个简单的演示如何使用线程来处理耗时操作的例子:
#include <QThread>
#include <QDebug>
// 定义一个继承自 QThread 的线程类
class MyThread : public QThread {
Q_OBJECT
public:
void run() override {
// 在此处编写需要在线程中执行的代码
for (int i = 0; i < 10; i++) {
qDebug() << "Running in thread: " << QThread::currentThreadId();
msleep(1000); // 线程休眠1秒钟,模拟耗时操作
}
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建线程对象,并启动它
MyThread thread;
thread.start();
// 主线程继续执行其他任务
for (int i = 0; i < 5; i++) {
qDebug() << "Running in main thread: " << QThread::currentThreadId();
QThread::msleep(500); // 主线程休眠500毫秒,模拟其他任务
}
return app.exec();
}
上面的例子中,我们首先定义了一个继承自 QThread
类的 MyThread
类,并在其中重载了 run()
函数。在 run()
函数中编写需要在线程中执行的代码。
然后,在主函数中创建了一个 MyThread
对象,并调用其 start()
函数来启动该线程。同时,在主函数中也有一些其他任务需要执行,通过主线程的循环来模拟这些任务。
在运行程序时,我们可以看到控制台输出的信息。其中 Running in thread:
的输出表示当前正在执行的是线程中的代码,Running in main thread:
的输出则表示当前正在执行的是主函数中的其他任务。
需要注意的是,在多线程编程中,如果需要在子线程中更新 UI 界面或者与其他对象进行交互,需要使用信号与槽机制或者 QtConcurrent 等方式来实现。此处仅演示了简单的线程创建和执行流程。