1. 启动外部程序的两种方式:
(1) 一体式:void start()外部程序启动后,将随主程序的退出而退出;
(2) 分离式:void startDetached()外部程序启动后,当主程序退出时并不退出。而是继续执行。
2. 当程序路径中含有空格的时候,特别是windows系统该程序路径会无法被识别。
解决方法是将程序路径传递给arguments参数。
3. 阻塞的函数,调用会可能界面停止响应,在交互性比较强的应用需要注意使用。
/* 堵塞。直到外部程序启动 */
bool waitForStarted(int msecs = )
/* 堵塞,直到输出通道中的新数据可读 */
bool waitForReadyRead(int msecs = )
/* 堵塞,直到输入通道中的数据被写 */
bool waitForBytesWritten(int msecs = )
/* 堵塞,直到外部程序结束 */
bool waitForFinished(int msecs = )
4. 管道命令的正确使用方法
正确实现使用setStandardOutputProces接口:
/* command1 | command2 */
QProcess process1;
QProcess process2;
process1.setStandardOutputProcess(&process2);
process1.start("command1");
process2.start("command2");
5. 捕获输出
(1) 标准输出
QByteArray readAllStandardOutput()
(2) 标准错误
QByteArray readAllStandardError()