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

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

  • 简洁地筛选数据

    筛选某个列表数据大多数都是使用for循环实现,或许使用QtConcurrent::blockingFilter会更...

  • Qt多线程:QtConcurrent + QFuture + Q

    QtConcurrent实际是一个命名空间,该命名空间提供了高级API,从而可以在不使用低级线程原语(启动线程、线...

  • Qt官方示例-并发运行函数

    演示如何并发运行标准函数。   QtConcurrent的Run函数示例演示如何将并发性应用于标准函数,使用QFu...

网友评论

    本文标题:QtConcurrent

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