1

使用 Qpr​​ocess 的标准方法如下:

 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。但是,如果我的二进制文件也接受命令行参数怎么办?我在哪里供应?

4

2 回答 2

3

您可以使用arguments()

#include <QApplication>

...

QStringList myArgs = qApp->arguments();

myProcess->start(program, myArgs);
于 2013-03-22T12:43:45.320 回答
1

我试过这个:

/home/user/1.sh

#!/bin/sh

echo $1 >> /home/user/1.out
echo $2 >> /home/user/1.out
echo $3 >> /home/user/1.out

主文件

#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.出

qwe
123
c c c

似乎为我工作。

于 2013-03-22T13:09:14.957 回答