当前位置:编程学习 > wap >>

Qt中如何获取通过建立新线程启动的外部程序的执行结果

    为了防止在启动外部程序执行相关命令时界面僵死,建立了新线程,在新线程里启动外部程序,通过操作界面按钮不断的向外部程序发送命令,同时将外部程序执行相关命令的结果返还回来在TEXTEDIT控件里打印出来。在无命令可执行的时候外部程序处于等待状态知道主程序(界面)发来quit信号才退出。
    问题1:通过开线程的方式启动外部程序,外部程序如何获取主程序(界面)发送来的命令;
    问题2:在线程里执行的外部程序如何将执行相关命令后的结果返回给主程序。

我的思考:通过重新实现run()函数来启动外部程序,同时建立connect连接,将主程序的信号与外部程序连接起来从而实现问题一的解决;问题二,通过类似的方式在run()函数中建立connect,不断监测外部程序时否有数据输出,若有则启动函数读取数据,并将读取到的数据emit到主程序(界面).
可是这两种看起来合理的思路似乎都无法正确的解决这两个问题。下面是我测试第二个问题的时候run()函数的实现截图。其中,LaunchSimsparc是启动外部程序的函数,connect()的期待作用是将外部程序的输出信号与读数据函数连接在一起,如果有数据可读则调用函数进行读取,并将读取到的数据发送到主程序。



欢迎大家积极的参加到讨论当中。分数不多,大家共享了。 --------------------编程问答-------------------- 问题补充,connect()函数的第五个参数是Qt::BlockingQueuedConnect;感觉这个参数不是问题关键所在,问题应该是connect的位置。因为第五个参数所有类型我都试过。 --------------------编程问答-------------------- 怎么也没有人来关注一下呢?看来我得自己解决了 --------------------编程问答-------------------- 第一个问题已经解决,第二个呢?connect应该在何处声明呢?才可以实时的检测外部程序是否有数据输出 --------------------编程问答-------------------- 很好的帖子,正在学习Qt中,这两个问题我也可能会遇到,帮不上忙,帮顶先 --------------------编程问答-------------------- 正在学习Qt中,这个问题我也会遇到,现在帮不上忙,帮顶先 --------------------编程问答-------------------- 正在学习Qt中,这个问题我也会遇到,现在帮不上忙,帮顶先
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,