Qt/C++:用按钮任意中断QProcess(模拟^C)

Qt/C++: interrupt QProcess arbitrarily with button (simulate ^c)

本文关键字:QProcess 模拟 中断 任意 C++ 按钮 Qt      更新时间:2023-10-16

因此,我需要制作一个Qt应用程序(带有GUI)来执行"adb-logcat"命令(这是一个一直生成的日志,直到按下^c为止)。我需要一个GUI按钮来停止进程并将输出传递给文本浏览器。这是我用来获得QProcess输出的代码:

QProcess process;
process.start("adb logcat");
process.waitForFinished(-1);
QByteArray logcatOut = process.readAllStandardOutput();
ui->devicesOutput->setText(logcatOut);

感谢

process.waitForFinished(-1);

将阻止您的程序被进一步执行,直到进程"adb"完成。因此,您的GUI将被冻结。

  1. 您应该将QProcess进程定义为类变量。使用QProcess*过程;而不是在堆栈上创建它。(所有QObject衍生物的最佳实践)

  2. 声明一个插槽,用于处理按钮的点击信号。

  3. 调用插槽中的process->terminate()。

使用QProcess::terminate停止运行应用