启动一个线程的步骤: (1)  创建一个自己的线程类继承QT中的QThread类   创建线程类WorkThread; (2)   在自己的WorkThreak类中重新实现run()函数, 该函数是一个死循环, 主要是完成自己需要的功能代码 (3)  使用自己的类WorkThread 实例一个对象,也就是用该类创建一个变量 如: WorkThread *task = new WorkThread (this); (4)  然后通过start()函数启动这个线程, 如task->start();启动该线程 重载的run()函数就是一个独立运行线程, 要想实现多线程就多次继承QThread类在不同的类中的run()函数中实现不同的功能

当然不止只重载 run() 函数, 可以重载 start() 函数为一个槽函数,使用按钮启动该线程或者连接某个信号启动该线程

实现如下

例子1

(1) 创建类WorkThread继承QThread类; 

WorkThread.h文件:

WorkThread.cpp文件:

main.cpp文件:

工程管理文件 Thread.pro文件:

工程目录;

qt 主线程调用 processEvents_死循环

程序运行状态:

qt 主线程调用 processEvents_死循环_02

测试上面的线程使用

线程也不会终止, 开启的新线程是死循环啊

 

例子2

工程文件:

qt 主线程调用 processEvents_qt_03

1. 主要想法就是在子线程中的循环设定一个条件,当想停止这个线程时,就改变线程循环的条件

如:  while(isStop==false)  只需要改变  "isStop " 的状态就可以实现线程的循环了

2. 实现一个修改这个标志的函数,方便外部修改

mythread.cpp文件:

mythread.h文件

 

3. 在外部只要调用这个修改标志的公共函数,同时调用 task->quit(); 和 task->wait(); 共同终止一个线程  

widget.cpp文件:

widget.h文件

 

main.cpp文件

 

qt 主线程调用 processEvents_死循环_04

 

 

 

 

启动一个线程的步骤: (1)  创建一个自己的线程类继承QT中的QThread类   创建线程类WorkThread; (2)   在自己的WorkThreak类中重新实现run()函数, 该函数是一个死循环, 主要是完成自己需要的功能代码 (3)  使用自己的类WorkThread 实例一个对象,也就是用该类创建一个变量 如: WorkThread *task = new WorkThread (this); (4)  然后通过start()函数启动这个线程, 如task->start();启动该线程 重载的run()函数就是一个独立运行线程, 要想实现多线程就多次继承QThread类在不同的类中的run()函数中实现不同的功能

当然不止只重载 run() 函数, 可以重载 start() 函数为一个槽函数,使用按钮启动该线程或者连接某个信号启动该线程

实现如下

例子1

(1) 创建类WorkThread继承QThread类; 

WorkThread.h文件:

WorkThread.cpp文件:

main.cpp文件:

工程管理文件 Thread.pro文件:

工程目录;

qt 主线程调用 processEvents_死循环

程序运行状态:

qt 主线程调用 processEvents_死循环_02

测试上面的线程使用

线程也不会终止, 开启的新线程是死循环啊

 

例子2

工程文件:

qt 主线程调用 processEvents_qt_03

1. 主要想法就是在子线程中的循环设定一个条件,当想停止这个线程时,就改变线程循环的条件

如:  while(isStop==false)  只需要改变  "isStop " 的状态就可以实现线程的循环了

2. 实现一个修改这个标志的函数,方便外部修改

mythread.cpp文件:

mythread.h文件

 

3. 在外部只要调用这个修改标志的公共函数,同时调用 task->quit(); 和 task->wait(); 共同终止一个线程  

widget.cpp文件:

widget.h文件

 

main.cpp文件

 

qt 主线程调用 processEvents_死循环_04