以下例子QEventLoop可以防止QProcess运行外部程序使得界面阻塞
QProcess process;
process.start(QString(cmd));//执行外部程序
QEventLoop loop;
connect(&process,static_cast<void(QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished),
[=]()
{
loop.quit();
}
);
//loop.exec();//可操作界面
loop.exec(QEventLoop::ExcludeUserInputEvents);//不可操作界面