QThread之创建

来源:互联网 发布:java 文件服务器框架 编辑:程序博客网 时间:2024/06/05 06:35

1.继承QThread并且覆盖其中的run方法

 

2.调用start启动线程

 

#ifndef MYTHREAD_H#define MYTHREAD_H#include <QThread>#include <QString>#include <QDebug>class myThread : public QThread{    Q_OBJECTpublic:    explicit myThread(QString str);    void run();private:    QString mname;signals:public slots:};#endif // MYTHREAD_H


 

#include "mythread.h"myThread::myThread(QString para):mname(para){}void myThread::run(){    for(int i=0;i <= 100;i++){        qDebug() << this -> mname << " " << i;    }}


3.这个基本跟java的一样,这个可以简化,我们只是开启一个线程去跑run的代码,有点小题大用,这时我们可以直接使用

QtConcurrent::run(myRunFunction,QString("A"));

他接受一个方法和参数

包含头文件#include <QtConcurrent/qtconcurrentrun.h>

 

以及他会返回一个Future,这个在scala中比较常用,这种模式很有用,他可以让你直接控制线程的状态,例如我们可以通过

t1.waitForFinished();来等待结果,当然这是不好的,因为他是堵塞的,如果用回调的方式来监听结果就很棒

 

 


 

0 0