我开发了一个由前端 Qt-GUI 和求解器 EXE 组成的应用程序。由于这两个是独立的模块,我可以通过使用如下 QProcess 在 Qt-GUI 中成功启动 EXE:
QProcess *myProcess = new QProcess;
myProcess->start(exeFilePath, args);
在哪里
exeFilePath = "EXE"
args = "input1 -option1 name1 -option2 name2"
从 QProcess 的信号中,我可以成功地从输出通道读取并更新 Qt-GUI 的 QGLWidget 中的进度。
事情随着时间而改变。EXE 现在是 MPI-EXE,一个基于 MPI 的可执行文件,我需要通过 Qt-GUI 以实际的方式使用它。
我尝试了 MPI-EXE 的上述 QProcess 练习,并进行了以下更改:
exeFilePath = "mpirun -np 4 MPI-EXE"
执行此操作时,myProcess 无法启动,并且在打印错误时,它给出了 UnknownError。据我了解,QProcess 本身在一个单独的线程中运行,因此我必须启动一个 4 进程 MPI-EXE,这会造成问题。
我需要帮助:
- 如何在没有 Qt-GUI 冻结的情况下启动 MPI-EXE?
- 当我必须在 QGLWidget 中绘制进度时,如何监控 MPI-EXE 的进度?
我将非常感谢对我的问题的任何评论。请帮忙。谢谢。