QT——QThread类

QThread类提供与系统无关的线程

QThread代表在程序中一个单独的线程控制,从run()开始执行

1、启动线程:start()

2、结束线程:exit()、quit()

3、查询线程状态:isFinished()、isRunning()

4、使线程等待:wait()

5、暂停线程

(1)暂停秒单位的线程:sleep()

(2)暂停毫秒单位的线程:msleep()

(3)暂停微妙单位的线程:usleep()

6、返回标识当前正在执行的线程

(1)currentThreadID():返回该线程平台特定的ID

(2)currentThread():返回一个线程指针

7、设置线程名称:在启动线程前调用SetObjectName(),不调用则线程名称为线程对象的运行时类名(QThread子类的类名)

8、QThread类的使用方式

(1)QObject::moveToThread()

(2)继承QThread类(我感觉每创建一个线程其实就是新建一个继承自QThread类,mainwindow算主线程,需要多少个子线程就自定义几个继承自QThread的类的对象)

    步骤:

    <1>创建新的c++类(如MyThread),Base class选择“<custom>”,“<custom>”下面输入QThread --> 要在MyThread.h文件中写#include <QThread>,否则会报error: expected class-name before '{' token(该error的意思是找不到相关类)

    <2>在MyThread.h中声明好run()和用于终止线程的stop()函数,如下图所示:

    <3>在MyThread.cpp里重载run()、stop()函数。其中run()里面写的是该线程需要执行的操作,stop()里写的是如何让该线程终止的操作,如下图所示:

    <4>在主线程的.h文件中需要#include你自定义的线程头文件,如图所示:

    还要在主线程.h文件中(在这里是dialog.h)创建好各子线程的对象,后期通过各子线程的对象调用start()函数来启动对应的线程,如图所示:

    <5>在你的主线程中,哪里需要开启线程,就在哪里写thread.start();哪里需要终止线程,就在哪里写thread.stop()。我是在dialog.ui的两个button对应的槽函数中开启和终止线程,所以在dialog.cpp中开启、终止线程如下图所示:

    你可以在主线程的构造函数里启动子线程(就是用start()),也可以发射一个信号后在对应的槽函数里启动子线程,反正在哪里想启动线程就用“子线程对象.start()”即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值