首页 > 技术知识 > 正文

QCoreApplication::processEvents()一般用在,qt界面执行耗时操作会导致界面卡死,这时候使用这个函数,是为了不卡死界面,并且能处理其他得消息和事件。 大部分情况会用在while(1)以及for循环中:

QWaiting *pwait = new QWaiting(this); pwait->show(); for (int i = 0; i < fileList.size(); i++) { srcFileName = m_Src + “/” + fileList.at(i); destFileName = m_Dest + “/” + fileList.at(i); if (QFile::copy(srcFileName.simplified(), destFileName.simplified())) { iSucceed ++; } QCoreApplication::processEvents(); } pwait->close();

此时定义得QWaiting *pwait 为一个弹窗,里面包含了一个GIF动图,可以做耗时操作时,显示转动,不至于卡着界面。for循环中是一个文件复制得操作,比较占用时间。 等耗时操作结束,可以自动退出此页面。 这种方法有明显的缺点。例如:假设你想要并行调用两个类似这样的循环,其中一个将会阻止另一个直到第一个完成(所以你不能分配计算能力到不同的任务)。这也会使应用程序的事件延迟反应。因此这种方法只适合单线程中处理的简短的操作,如:启动画面和短期监控操作。

猜你喜欢