从 QtProcess 运行 Linux 二进制文件时为其提供参数
Posted
技术标签:
【中文标题】从 QtProcess 运行 Linux 二进制文件时为其提供参数【英文标题】:Supplying parameters to a Linux binary while running it from QtProcess 【发布时间】:2013-03-22 12:35:40 【问题描述】:Qprocess的标准使用方式如下:
QObject *parent;
...
QString program = "./path/to/Qt/examples/widgets/analogclock";
QStringList arguments;
arguments << "-style" << "motif";
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
但是,我要做的是在控制台 (sh) 上运行二进制文件,然后将输出从那里复制到 Qt 中的文本框。
所以现在我需要在myProcess->start(program, arguments);
中做的是在程序中传递sh
和arguments
中的二进制名称。但是,如果我的二进制文件也接受命令行参数怎么办?我在哪里供应?
【问题讨论】:
【参考方案1】:你可以使用arguments()
:
#include <QApplication>
...
QStringList myArgs = qApp->arguments();
myProcess->start(program, myArgs);
【讨论】:
【参考方案2】:我试过了:
/home/user/1.sh
#!/bin/sh
echo $1 >> /home/user/1.out
echo $2 >> /home/user/1.out
echo $3 >> /home/user/1.out
main.cpp
#include <QtCore>
int main(int argc, char *argv[])
QCoreApplication a(argc, argv);
QString program = "sh";
QStringList args;
args << "/home/user/1.sh" << "qwe" << "123" << "c c c";
QProcess p;
p.start(program, args);
p.waitForFinished();
return 0;
运行我的应用后,我得到:
1.out
qwe
123
c c c
似乎对我有用。
【讨论】:
以上是关于从 QtProcess 运行 Linux 二进制文件时为其提供参数的主要内容,如果未能解决你的问题,请参考以下文章
Qt QProcess::finished() 信号没有这样的插槽