大多数情况下我们使用 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
等接口。