qt中将一个类的函数放到线程中执行

效果图
qt中将一个类的函数放到线程中执行

  1. 在.pro中添加
    QT += concurrent

  2. 创建测试类如下

class MyConcurentTest{
public:
    MyConcurentTest(){}
    ~MyConcurentTest(){}
    void fun1(QString str){
        for(int i=0;i<10;i++){
            qDebug() << "hello " << str;
        }
    }
    bool fun2(){
        for(int i=0;i<10;i++){
            qDebug() << "hello fun2";
        }
        return true;
    }
};
  1. 实例化测试类,并将其中的函数放入到线程中执行
    MyConcurentTest mc;
    //QFuture后的<>内写入函数返回的类型
    //无参数返回,传递参数
    QString str = "gg";
    QFuture<void> res = QtConcurrent::run(&mc, &MyConcurentTest::fun1,str);
    //有参数返回,无参数传递
    //QFuture<bool> res = QtConcurrent::run(&mc, &MyConcurentTest::fun2);
    for(int i=0;i<10;i++){
        qDebug() << "hello main";
    }
    //获取线程中执行函数返回的结果
    //bool testres = res.result();
    //qDebug() << "res:" << testres << res.isFinished();// true false
    res.waitForFinished();
    //res.isFinished()判断线程是否执行完成
    qDebug() << "res:" << res.isFinished();//true