Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将差别组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点先容如何运用QThread组件实现多线程功能。
多线程技能在程序开发中尤为常用,Qt框架中提供了QThread库来实现多线程功能。当你需要利用QThread时,需包含QThread模块,以下是QThread类的一些主要成员函数和槽函数。
成员函数/槽函数形貌QThread(QObject *parent = nullptr)构造函数,创建一个QThread对象。~QThread()析构函数,开释QThread对象。void start(QThread: riority priority = InheritPriority)启动线程。void run()默认的线程执行函数,需要在继承QThread的子类中重新实现以界说线程的操作。void exit(int returnCode = 0)请求线程退出,线程将在恰当的时候退出。void quit()请求线程退出,与exit()雷同。void terminate()立即终止线程的执行。这是一个伤害的操作,可能导致资源走漏和未完成的操作。void wait()等候线程完成。主线程将被阻塞,直到该线程退出。bool isRunning() const查抄线程是否正在运行。void setPriority(Priority priority)设置线程的优先级。Priority priority() const获取线程的优先级。QThread: riority priority()获取线程的优先级。void setStackSize(uint stackSize)设置线程的堆栈大小(以字节为单位)。uint stackSize() const获取线程的堆栈大小。void msleep(unsigned long msecs)使线程休眠指定的毫秒数。void sleep(unsigned long secs)使线程休眠指定的秒数。static QThread *currentThread()获取当前正在执行的线程的QThread对象。void setObjectName(const QString &name)为线程设置一个对象名。当我们需要创建线程时,通常第一步则是要继承QThread类,并重写类内的run()方法,在run()方法中,你可以编写需要在新线程中执行的代码。当你创建一个QThread的实例并调用它的start()方法时,会自动调用run()来执行线程逻辑,如下这样一段代码展示了如何运用线程类。
[code]#include #include #include class MyThread : public QThread{public: void run() override { for (int i = 0; i < 5; ++i) { qDebug() |