如何从 bash 脚本捕获终端输出并将其显示在我的 Qt UI 中?
How can I capture terminal output from a bash script and display it in my Qt UI?
我编写了一个简单的GUI,指导用户完成签出/签入过程,然后在用户单击GUI按钮时运行bash脚本。
我想在 GUI 中创建一个字段并显示脚本的输出。现在我正在使用system()
(stdio(来运行脚本,但是将脚本的输出管道到我的gui中的文本字段似乎很混乱。
使用QProcess
会是更好的方法吗? 如果是这样,我将如何开始?
另外,您会推荐哪种Qt小部件/容器?
使用 QProcess 会是更好的方法吗?如果是这样,我将如何开始?
通过查看 QProcess 文档,您可以执行类似操作:
QString program = "/usr/bin/ls";
QStringList arguments{"-lahR"};
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
connect(myProcess, &QProcess::readyReadStandardOutput, [myProcess] {
qDebug() << "Got output from process:" << myProcess->readAllStandardOutput();
// Or copy the data to QPlainTextEdit::appendPlainText()
});
您可能还希望捕获标准错误输出。您可以执行第二次connect()
或使用QProcess::setProcessChannelMode(QProcess::MergedChannels)
。
使用 QProcess
执行 shell 脚本应该可以正常工作,只要它们在开头用 #! interpreter [optional-arg]
标记即可。这是因为QProcess
内部使用 fork
+ execvp
,并且文档明确指出允许 shell 脚本。
命令完成后,不要忘记删除QProcess
。
另外,您会推荐哪种Qt小部件/容器?
听起来像是QPlainTextEdit的工作。或者,您可以使用较慢的QTextEdit,它带来了其他功能。
相关文章:
- 为什么我的程序不能显示斐波那契级数?
- 为什么我的 cout 在输出中没有显示字符串?
- 为什么在为其分配编号后无法显示我的字符串值?
- 你能帮我解决显示矩阵的问题吗?
- 我的期末考试遇到了麻烦.代码不断循环回到我的订购菜单,不会显示我的总价
- 如何重载运算符<<显示我的列表
- 为什么我无法显示我的链表?
- 为什么我的代码不显示我的 TButton 数组?
- 我如何显示我的字符串
- 如何在printf中显示我的源代码的行号
- 如何在Qt客户端应用程序中显示我的OSM磁贴
- 类,显示我的最终结果C++时出现问题
- 需要有关使用 for 循环显示我的数组的帮助
- 有没有一种方法可以在两列中显示我的素数列表输出
- 如何显示我的 Queue & Stack?
- 如何使用 OPENCV 显示我的代码中的图像
- 无法显示我的每个函数的结果
- 我如何让Anjuta突出显示我的构建系统(waf)产生的错误/行
- 如何在 GUI 输出窗口而不是 Visual Studio 2015 中的 cmd 控制台上显示我的C++程序输出
- 为什么 OpenGL 不显示我的火粒子