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
しかし、何も起こりませんでした。何か案は?
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);
プロセスの実行中にプログラムを待機させたい場合は、次を使用できます。
QProcess::execute(file);
の代わりに
QProcess process;
process.start(file);
QDir :: homePathは区切り文字で終わりません。 exeへの有効なパス
QString file = QDir::homePath + QDir::separator + "file.exe";
QProcess::startDetached
;を使用するだけですそれは静的であり、終了するのを待ったり、ヒープなどに何かを割り当てることを心配する必要はありません:
QProcess::startDetached(QDir::homepath + "/file.exe");
これはQProcess::execute
に対応する独立したものです。