大多数情况下我们使用QProcess都是直接等待命令执行完成返回结果,但是有些情况下需要在获取命令运行中的输出。那该怎么做呢?先上代码。
class Process : public QObject
{
Q_OBJECT
public:
Process()
{
connect(&m_process, SIGNAL(readyReadStandardOutput()), this, SLOT(onReadData()));
m_process.setReadChannel(QProcess::StandardOutput);
m_process.start("cmd /c ping /t www.qt.io");
}
private slots:
void onReadData()
{
qDebug() << m_process.readAllStandardOutput();
}
private:
QProcess m_process;
};
例子中关键的操作是设置setReadChannel
与绑定readyReadStandardOutput
信号(用于读数据通知)。
由于QProcess继承于QIODevice类,可以使用read
,readAll
,readLine
等接口。