继承QThread类,重写run()函数;实例
时间: 2024-09-26 17:18:52 浏览: 28
Qt之线程的使用(继承QThread重写run函数) 源码
继承QThread类并重写run()函数的例子通常是这样的:
```cpp
class MyTaskThread : public QThread {
public:
explicit MyTaskThread(QObject* parent = nullptr) : QThread(parent) {}
private:
void run() override { // 这里编写你的异步任务代码
// 例如,这里可以是一个无限循环或者复杂的计算任务
while (!quit()) {
processData();
QThread::sleep(1000); // 每秒执行一次数据处理
}
}
protected:
bool quit() const { return qAtomicTestAndSet(&m_quitFlag, true); } // 设置一个信号用于退出循环
signals:
void taskFinished(); // 定义一个信号通知任务完成
};
// 使用示例
MyTaskThread myThread;
myThread.start(); // 启动新线程
// 当你想结束任务时,从主线程发送一个信号
emit myThread.taskFinished();
```
在这个例子中,`MyTaskThread`继承了QThread,并重写了run()函数,使其在新的线程中执行`processData()`函数。当接收到`taskFinished()`信号时,说明任务已完成,你可以在此处安排相应的清理或回调操作。
阅读全文