1

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);渡すことです。しかし、私のバイナリがコマンドライン引数も取る場合はどうなりますか?どこに供給しますか?sharguments

4

2 に答える 2

3

使用できますarguments()

#include <QApplication>

...

QStringList myArgs = qApp->arguments();

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

私はこれを試しました:

/ホーム/ユーザー/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.アウト

qwe
123
c c c

私のために働いているようです。

于 2013-03-22T13:09:14.957 に答える