启动一个线程的步骤: (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文件:
工程目录;
程序运行状态:
测试上面的线程使用
线程也不会终止, 开启的新线程是死循环啊
例子2
工程文件:
1. 主要想法就是在子线程中的循环设定一个条件,当想停止这个线程时,就改变线程循环的条件
如: while(isStop==false) 只需要改变 "isStop " 的状态就可以实现线程的循环了
2. 实现一个修改这个标志的函数,方便外部修改
mythread.cpp文件:
mythread.h文件
3. 在外部只要调用这个修改标志的公共函数,同时调用 task->quit(); 和 task->wait(); 共同终止一个线程
widget.cpp文件:
widget.h文件
main.cpp文件
启动一个线程的步骤: (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文件:
工程目录;
程序运行状态:
测试上面的线程使用
线程也不会终止, 开启的新线程是死循环啊
例子2
工程文件:
1. 主要想法就是在子线程中的循环设定一个条件,当想停止这个线程时,就改变线程循环的条件
如: while(isStop==false) 只需要改变 "isStop " 的状态就可以实现线程的循环了
2. 实现一个修改这个标志的函数,方便外部修改
mythread.cpp文件:
mythread.h文件
3. 在外部只要调用这个修改标志的公共函数,同时调用 task->quit(); 和 task->wait(); 共同终止一个线程
widget.cpp文件:
widget.h文件
main.cpp文件