QT:无法在启动/停止按钮中终止 Qprocess
QT: Can't terminate Qprocess in a start/stop push button
我想创建一个启动/停止按钮来启动和终止进程。这是我的代码:
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并为其调用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();
}
}
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 问:如何使用C++中的按钮从窗口打开窗口
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- llvm构建器向基本块添加终止符
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- Qt自定义QPush按钮未显示在布局上
- QT:无法在启动/停止按钮中终止 Qprocess
- QT中的运行和终止进程C++通过按下按钮
- 我如何终止我的程序使用ESC按钮
- 创建一个按钮,通过该按钮可以终止或终止正在运行的进程