我正在使用QtCreator,我想使用来自QT Windows的带有xml文件的python脚本。
文件已打开,但是我不能使用脚本:
QString p_stdout = _process.readAll();
告诉我:QIODevice :: read(QProcess):设备未打开
这是我的代码:
// EXEC PYTHON SCRIPT
QStringList args = (QStringList() << script_path << employesDesires << file_path) ; // parameters
QString program = "Python"; // program
int exitCode = _process.execute( program, args );
_process.waitForFinished(-1);
// _process.open(QIODevice::OpenMode()) ;
QString p_stdout = _process.readAll();
QString s = QString::number(exitCode);
ui->labelResult->setText(s);
退出代码返回 0
我在许多论坛上进行了搜索,但找不到我能理解的解决方案。
答案 0 :(得分:0)
从documentation,QProcess::execute
...
在新进程中使用arguments参数启动程序,等待其完成,然后返回进程的退出代码。新进程写入控制台的所有数据都将转发到调用进程
因此,您永远不会看到QProcess
实例处于打开状态-调用返回时它实际上已关闭。
相反,您可能想使用QProcess::start
...
_process.start(program, args);
这将作为调用者的子代执行指定的进程,并通过各种读取通道提供其输出。
此外,请注意,虽然QProcess::waitForFinished
似乎是一个有用的例程,但通常最好连接到各种signals并做出相应的反应-无论是处理错误还是从stdout / stderr读取等。