QT——QThread类

QT——QThread类QThread 类提供与系统无关的线程 QThread 代表在程序中一个单独的线程控制 从 run 开始执行 1 启动线程 start 2 结束线程 exit quit 3 查询线程状态 isFinished is

大家好,欢迎来到IT知识分享网。

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()函数,如下图所示:

QT——QThread类

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

QT——QThread类

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

QT——QThread类

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

QT——QThread类

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

QT——QThread类

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/158397.html

(0)
上一篇 2025-01-24 15:45
下一篇 2025-01-24 16:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信