我需要将 QProcess 的输出读入 QString
QString program = "cmd", output;
command = "cd /d ";
command += QString::fromLocal8Bit(dir); //здесь хранится путь до папки, в которой должна исполняться команда
command += " & pip list";
qDebug() << command;
arg << "/C" << command;
QProcess *Process2 = new QProcess(this);
Process2->start(program, arg);
connect(Process2, &QProcess::readyReadStandardOutput, [&] {
QString output(Process2->readAll());
});
qDebug() << output;
我检查了-存储在命令中的命令-有效,但是在该行中qDebug() << output;我得到了值“”。编码一切都很好(命令本身是输出,您可以将其复制并粘贴到 cmd - 它会起作用)。我怎样才能得到这个过程的输出到输出行?
在您的版本中,您使用异步 api,因此您的 lambda 将在难以理解的时间被调用,并且您无法在启动后立即打印输出,您必须在 lambda 本身中执行此操作
选项 2 - 使用同步 api ( https://doc.qt.io/qt-5/qprocess.html#synchronous-process-api )
这里
UPD:如果仍然有同步工作,另一种选择是不使用 lambda 和信号:
PS:在我看来,您的程序最终将由 SO 社区编写。我认为你可以处理这个问题,特别是因为已经回答了类似的问题