web-dev-qa-db-ja.com

Qt外部プログラムの実行

QT-Programmから外部プログラムを開始したい。唯一の有効なソリューションは次のとおりです。

system("start Explorer.exe");

ただし、Windowsでのみ機能し、コマンドラインをしばらく開始します。

次に試したのは:

QProcess process;
QString file = QDir::homepath + "file.exe";
process.start(file);
//process.execute(file); //i tried as well

しかし、何も起こりませんでした。何か案は?

24
Testerrrr

processオブジェクトがスタック上の変数(メソッドなど)の場合、既に開始したプロセスはQProcessのデストラクターで強制終了されるため、コードは期待どおりに機能しません。メソッドが終了したとき。

void MyClass::myMethod()
{
    QProcess process;
    QString file = QDir::homepath + "file.exe";
    process.start(file);
}

代わりに、そのようなヒープにQProcessオブジェクトを割り当てる必要があります。

QProcess *process = new QProcess(this);
QString file = QDir::homepath + "/file.exe";
process->start(file);
28
tomvodi

プロセスの実行中にプログラムを待機させたい場合は、次を使用できます。

QProcess::execute(file);

の代わりに

QProcess process;
process.start(file);
7
nv95

QDir :: homePathは区切り文字で終わりません。 exeへの有効なパス

QString file = QDir::homePath + QDir::separator + "file.exe";
5
nnesterov

QProcess::startDetached ;を使用するだけですそれは静的であり、終了するのを待ったり、ヒープなどに何かを割り当てることを心配する必要はありません:

QProcess::startDetached(QDir::homepath + "/file.exe");

これはQProcess::executeに対応する独立したものです。

0
Jason C