赞
踩
需要创建一个线程类的子类,让其继承Qt中的子线程类
1.创建
在Qt中继承QThread是常规的实现线程的方式,只需要继承后重写其中的run()函数
(大多数线程操作都是重写run()函数)并实现自己的线程工作即可。
- // ThreadObject.h
- #pragma once
- #include <QThread>
-
- class ThreadObject
- : public QThread
- {
- Q_OBJECT
- public:
- ThreadObject();
- ~ThreadObject();
-
- public slots:
- void StopThread();
- protected:
- virtual void run() override;
-
- signals:
- // 自定义信号, 传递数据
- void curNumber(int num);
-
- private:
- bool is_stop_;
- int count_;
- };
- // ThreadObject.cpp
- #include "ThreadObject.h"
- #include <qDebug>
- #include<windows.h>
-
- ThreadObject::ThreadObject()
- : is_stop_(false)
- , count_(0) { }
-
- ThreadObject::~ThreadObject(){}
-
- void ThreadObject::StopThread()
- {
- is_stop_ = true;
- }
-
- void ThreadObject::run()
- {
- while (!is_stop_) {
- // 自定义信号, 传递数据
- emit curNumber(++count_);
- //延迟
- sleep(1);
- }
- qDebug() << " Exit";
- }
在主线程中创建子线程对象,new 一个就可以了
- //创建
- ThreadObject* thread = new ThreadObject();
- connect(thread, &ThreadObject::curNumber, this, [=](int num)
- {
- //unm是从线程那边传过来的数据
- ui.lcdNumber->display(num);
- });
- //启动线程
- thread->start();
thread->StopThread();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。