这几天一直在研究如何使用Qt4编辑的窗口调用外部程序,然后接收返回值。调用的部分比较容易,很快就实现了。问题主要出现在接受部分。利用到的Qt4资源有:
类QProcess
类成员函数start()、execte()
信号readyRead()、readyReadStandardError()、readyReadStandardOutput()
接受处理函数(自建)readOutput()
问题描述:
在调用前先在调用的窗口类定义中添加了“QProcess* process;”声明,然后在调用前用new分配了空间。接下来是建立连接“connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput()));"。之后调用start()运行目标程序。之后发现没有什么反应,利用调试模式的时候可以在“Applications Output”中看到有返回的内容。利用单步调试也发现没有signal出现。后来把signal改为“readyReadStandardError()”后发现有了信号。这样的话是不是意味着返回值是错误的呢?之后我更改了运行的目标程序,发现又没有信号了,把signal还原为“readyReadStandardOutput()”,信号再次出现。
解决思路:
经过阅读帮助文档,问题应该要通过“输出通道”、“信号”、“读入通道”三者的合理配置,才能达到目的。