Mar*_*rk 0 c++ bash user-interface qt qprocess
我编写了一个简单的GUI,引导用户完成签出/签入过程,然后在用户单击GUI按钮时运行bash脚本.
我想在GUI中创建一个字段并显示脚本的输出.现在我正在使用system()(stdio)来运行脚本,但是将脚本的输出传递给我gui中的文本字段似乎很乱.
使用QProcess是一种更好的方法吗?如果是这样,我将如何开始?
另外,你会推荐什么Qt Widget /容器?
使用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()
});
Run Code Online (Sandbox Code Playgroud)
您可能还想捕获标准错误输出.你可以做一秒钟connect()或使用QProcess::setProcessChannelMode(QProcess::MergedChannels).
执行shell脚本QProcess应该可以正常工作,只要它们#! interpreter [optional-arg]在开头标记.这是因为QProcess内部使用fork+ execvp,并且该文档清楚地说明了shell脚本是允许的.
不要忘记QProcess在命令完成时删除你的命令.
另外,你会推荐什么Qt Widget /容器?
听起来像是QPlainTextEdit的工作.或者,您可以使用较慢的QTextEdit,它带来了额外的功能.
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |