启动QProcess并一次读取一行输出

时间:2013-10-29 21:28:13

标签: c++ qt

Qt在读取子进程时首选输出一行的首选方法是什么?

我尝试将QProcess信号readyReadStandardOutput连接到调用QProcess方法readLine的函数。

1 个答案:

答案 0 :(得分:3)

首选方法是使用QIODevice发出的信号的异步方式。你的方法是正确的。确保您已阅读插槽中的所有可用线路:

process->setReadChannel(QProcess::StandardOutput);
while (process->canReadLine()) {
   QString line = QString::fromLocal8bit(process->readLine());
   ...
}

另请记住,一旦您阅读了某些内容,就无法再次阅读。 QIODevice的信号需要谨慎使用 - 您无法将任意数量的消费者连接到readyRead信号并在每个信号中执行读数。它不会像你预期的那样工作。如果第一个读取器读取所有数据,则后续读取的数据将无法再次读取。