QtConcurrent

作者: c之气三段 | 来源:发表于2021-08-22 12:16 被阅读0次
    QT += concurrent
    
    //无法触发弹窗控件等,可通过信号的形式触发无法使用的功能
     QtConcurrent::run([=](){
            qDebug() << __FUNCTION__  << QThread::currentThreadId() << QThread::currentThread();
        });
    
    QThreadPool pool;
    QtConcurrent::run(&pool, func);
    

    数据传递

    当匿名函数[=]时可捕捉到外部变量,我尝试了传控件不行。
    内部变量传出来

    int id=5;
    QtConcurrent::run([=](){
                foreach (auto var, m_mapFileData)
                {
                    if(var->getId()==id)
                    {
                        QString filePath;
                        if(!var->getPath().contains(":"))
                        {
                            filePath.append(QDir::currentPath()).append("/");
                        }
                        filePath.append(var->getPath());
                        QFile file(filePath);
                        if(file.open(QIODevice::ReadOnly | QIODevice::Text))
                        {
                            QTextStream in(&file);
                            QVector<QString> vect;
                            qRegisterMetaType< QVector<QString>>("QVector<QString>&");//注册此变量到线程
                            while(!in.atEnd())
                            {
                                QString strLine=in.readLine();
                                vect.append(strLine);
                            }
                            file.close();
                            emit signal_fillPerview(vect);//通过信号将数据传出
                        }
                    }
                }
               });
    

    相关文章

      网友评论

        本文标题:QtConcurrent

        本文链接:https://www.haomeiwen.com/subject/tebciltx.html