0

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

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

谢谢

4

2 回答 2

0

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

于 2013-08-10T13:59:25.630 回答
0

process.waitForFinished(-1);

将阻止您的程序进一步执行,直到进程“adb”完成。所以你的 GUI 将被冻结。

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

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

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

于 2013-08-10T23:14:46.680 回答