我想创建一个启动/停止按钮来启动和终止进程。所以这是我的代码:
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()
,但没有发生任何事情。有什么帮助吗?
答案 0 :(得分:3)
在这种情况下,每次单击按钮都将创建新的QProcess并为他调用start或terminate。不适用于流行创建的QProcess。 QProcess必须在成员区域,如下所示:
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();
}
}