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