【问题标题】:Running and killing processes in QT C++ via button press通过按下按钮在 QT C++ 中运行和终止进程
【发布时间】:2013-09-29 23:23:20
【问题描述】:

我正在尝试编写一个 GUI,当按下按钮时,将启动或停止进程。目前,我的代码甚至不会启动这个过程,我坚持为什么会这样。按钮单击并且文本更改,但该过程不执行并且不出现错误消息。这是QMainWindow对象中按钮槽的代码:

void clickedSlot(){   
        QString s = "Record";
        //switch between record and stop
        if(s!=((QPushButton*)sender())->text()){
            ((QPushButton*)sender())->setText("Record");
    process->kill();
    process->waitForFinished();
    delete process;
        }else{
            ((QPushButton*)sender())->setText("Stop");
    process = new QProcess(this);
    QString executable = "./record";
            process->start(executable);
    process->waitForStarted();
        }
};

对于 QProcess 为何无法启动以及之后如何停止它的任何帮助将不胜感激。我确实在代码顶部有一个#include

【问题讨论】:

  • 您应该检查 QProcess::error() 和 QProcess::state() 以获得更多信息。您还应该检查 QProcess::waitForStarted() 的返回值
  • 检查waitForStarted返回值。如果进程启动失败,它应该是假的。确保 record 可执行文件位于应用的工作目录中。
  • 你使用的是 OSX 还是 Linux 的平台?
  • 正如 JRG 所说。还有errorString().

标签: c++ qt user-interface process qprocess


【解决方案1】:

问题可能出在您正在(未)启动的可执行路径中。 请确保:

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2022-01-24
    • 2021-01-11
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多