Qt在读取子进程时首选输出一行的首选方法是什么?
我尝试将QProcess信号readyReadStandardOutput连接到调用QProcess方法readLine的函数。
答案 0 :(得分:3)
首选方法是使用QIODevice
发出的信号的异步方式。你的方法是正确的。确保您已阅读插槽中的所有可用线路:
process->setReadChannel(QProcess::StandardOutput);
while (process->canReadLine()) {
QString line = QString::fromLocal8bit(process->readLine());
...
}
另请记住,一旦您阅读了某些内容,就无法再次阅读。 QIODevice
的信号需要谨慎使用 - 您无法将任意数量的消费者连接到readyRead
信号并在每个信号中执行读数。它不会像你预期的那样工作。如果第一个读取器读取所有数据,则后续读取的数据将无法再次读取。