QIODevice :: read(QProcess):设备未打开

时间:2018-09-22 08:45:41

标签: python xml qt qt-creator xls

我正在使用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

我在许多论坛上进行了搜索,但找不到我能理解的解决方案。

1 个答案:

答案 0 :(得分:0)

documentationQProcess::execute ...

  

在新进程中使用arguments参数启动程序,等待其完成,然后返回进程的退出代码。新进程写入控制台的所有数据都将转发到调用进程

因此,您永远不会看到QProcess实例处于打开状态-调用返回时它实际上已关闭。

相反,您可能想使用QProcess::start ...

_process.start(program, args);

这将作为调用者的子代执行指定的进程,并通过各种读取通道提供其输出。

此外,请注意,虽然QProcess::waitForFinished似乎是一个有用的例程,但通常最好连接到各种signals并做出相应的反应-无论是处理错误还是从stdout / stderr读取等。