您的位置:首页 > 编程语言 > Qt开发

QT QThread 简单实现多线程

2017-11-21 19:39 197 查看
在本篇,会实现一个非常简单的线程。

一.创建一个工程

就是在QT总结第一篇介绍的,创建一个mainwindow。

二.在main.cpp中创建线程

整个代码中,我加入了大量的注释,很容易就可以弄懂

整个代码可以分为几步:

1)创建一个线程的类

2)实现类中的run函数

3)在main函数中,创建一个针对于该类的对象

4)通过该对象启动这个线程

到这里,代码就算完成了。线程一旦启动,就会去调用run函数,这个run函数会和主线程共同运行




#include <QtGui/QApplication>
#include <qthread.h>
#include <windows.h>

#include "mainwindow.h"

/*创建一个线程类*/
class MyThread1 : public QThread   //这里创建一个线程的类,

{                                 // 该类继承于QThread,其中只有一个函数run
    public:  
virtual void run();    //run函数式该线程的执行函数,也就是说,

//只要这个线程被启动,那么该函数就会被调用
};

/*一个线程的主函数,循环打印一句话*/
void MyThread1::run()
{
    while(1)
    {
        qDebug("hello");   //通过qDebug打印hello
        Sleep(1000);       //延迟1S
    }
}

/*创建另一个线程类*/
class MyThread2 : public QThread
4000
{
    public:
        virtual void run();

};

/*一个线程的主函数,循环打印一句话*/
void MyThread2::run()
{
    while(1)
    {
        qDebug("word");
        Sleep(1000);
    }
}

int main(int argc, char *argv[])
{

    /*定义一个线程,并且启动该线程*/
    MyThread1 thread1;       //这里通过刚才定义的第一个类,实例化一个对象
    thread1.start();         //这里启动该线程,然后run函数开始执行。

//(和linux下的那个线程函数差不多一个意思)

    /*定义另一个线程,并且启动该线程*/
    MyThread2 thread2;
    thread2.start();

    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();

}

该函数一旦运行,两个线程都会启动,并且两个线程的run函数都会执行,并各自循环打印hello和word

以下是截图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 多线程