我想创建一个启动/停止按钮来启动和终止进程。所以这是我的代码:
void MainWindow::on_pushButton_clicked(){
QProcess* ping_process = new QProcess(this);
if ( this->myTimer->isActive() == true ) {
this->myTimer->stop();
ui->pushButton->setText("Start");
//...
ping_process->start("ping", QStringList() << "8.8.8.8");
} else {
this->myTimer->start(500);
ui->pushButton->setText("Stop");
ping_process->terminate();
}
}
启动流程成功,更改按钮文本也成功。但是 ping_process->terminate();
不工作。我还尝试了 kill()
和 close()
,但没有任何反应。有帮助吗?
最佳答案
在这种情况下,每次单击按钮都会创建新的 QProcess 并为其调用启动或终止。不适用于先前创建的 QProcess。 QProcess必须在成员(member)区,像这样:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
...
private:
...
QProcess* ping_process;
};
MainWindow::MainWindow(QWidget *parent) :
...
ping_process(nullptr),
...
{
...
}
void MainWindow::on_pushButton_clicked() {
if (!ping_process)
{
ping_process= new QProcess(this);
}
if ( this->myTimer->isActive() == true ) {
this->myTimer->stop();
ui->pushButton->setText("Start");
//...
ping_process->start("ping", QStringList() << "8.8.8.8");
} else {
this->myTimer->start(500);
ui->pushButton->setText("Stop");
ping_process->terminate();
}
}
关于c++ - QT:无法在启动/停止按钮中终止 Qprocess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716202/