如何在QT应用程序中使用QProcess启动外部子进程,并继续执行主程序,而无需等待子进程完成,但同时从中获取回调他完成后的孩子过程?
第一种情景:
QProcess* child = new QProcess();
connect(child, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(isFinished( int, QProcess::ExitStatus )));
child->start( "example.exe", QStringList() << path);
.
.
. further execution of main application
此处启动子进程,主应用程序继续执行, 但是,虽然信号/插槽连接没有任何QT错误, 孩子完成后没有回调。
第二种情景:
QProcess* child = new QProcess();
connect(child, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(isFinished( int, QProcess::ExitStatus )));
child->start( "example.exe", QStringList() << path);
child->waitForFinished();
.
.
. NO further execution of main application
此处启动子进程,主应用程序不执行, 从信号/插槽完成的回调正确。 两者都不是我想要的。
有什么想法吗?
答案 0 :(得分:0)
失败是在第一个场景中无休止/无效的块,因此qt应用程序的主事件循环中的信号/槽处理无法正确完成。
提示:我们的解决方案是使用qthread来处理每个外部qprocess。 考虑必要的互斥体。