QThread 使用方法
时间: 2023-06-20 15:06:32 浏览: 103
QThread 是 Qt 框架提供的用于多线程编程的类,下面是 QThread 的使用方法:
1. 继承 QThread 类,实现 run() 函数来执行线程中的逻辑代码。
```
class MyThread : public QThread
{
Q_OBJECT
public:
void run() override {
// 执行线程中的逻辑代码
}
};
```
2. 创建线程对象,调用 start() 函数来启动线程。
```
MyThread *thread = new MyThread();
thread->start();
```
3. 在线程执行完成后,可以通过信号槽机制来通知主线程线程执行完成。
```
class MyThread : public QThread
{
Q_OBJECT
signals:
void finished();
public:
void run() override {
// 执行线程中的逻辑代码
emit finished();
}
};
MyThread *thread = new MyThread();
connect(thread, &MyThread::finished, this, &MyClass::onThreadFinished);
thread->start();
```
4. 在主线程中,可以通过调用 wait() 函数来等待线程执行完成。
```
MyThread *thread = new MyThread();
thread->start();
thread->wait();
```
5. 在 QThread 中使用 QTimer 定时器时,需要设置单独的线程运行模式,否则可能会导致定时器不准确。
```
QTimer *timer = new QTimer();
timer->moveToThread(thread);
connect(timer, &QTimer::timeout, this, &MyClass::onTimerTimeout);
timer->start(1000);
```
以上就是 QThread 的基本使用方法,通过继承 QThread 类并实现 run() 函数来执行线程中的逻辑代码,同时通过信号槽机制来通知主线程线程执行完成,还可以通过 wait() 函数等待线程执行完成。在使用 QTimer 定时器时,需要设置单独的线程运行模式。
阅读全文
相关推荐















