为了防止在启动外部程序执行相关命令时界面僵死,建立了新线程,在新线程里启动外部程序,通过操作界面按钮不断的向外部程序发送命令,同时将外部程序执行相关命令的结果返还回来在TEXTEDIT控件里打印出来。在无命令可执行的时候外部程序处于等待状态知道主程序(界面)发来quit信号才退出。
问题1:通过开线程的方式启动外部程序,外部程序如何获取主程序(界面)发送来的命令;
问题2:在线程里执行的外部程序如何将执行相关命令后的结果返回给主程序。
我的思考:通过重新实现run()函数来启动外部程序,同时建立connect连接,将主程序的信号与外部程序连接起来从而实现问题一的解决;问题二,通过类似的方式在run()函数中建立connect,不断监测外部程序时否有数据输出,若有则启动函数读取数据,并将读取到的数据emit到主程序(界面).
可是这两种看起来合理的思路似乎都无法正确的解决这两个问题。下面是我测试第二个问题的时候run()函数的实现截图。其中,LaunchSimsparc是启动外部程序的函数,connect()的期待作用是将外部程序的输出信号与读数据函数连接在一起,如果有数据可读则调用函数进行读取,并将读取到的数据发送到主程序。
欢迎大家积极的参加到讨论当中。分数不多,大家共享了。