Qt exécute le programme externe

je veux lancer un programme externe de mon QT-Programm. La seule solution efficace était:

system("start explorer.exe");

mais il ne fonctionne que pour windows et démarre une ligne de commande pendant un moment.

la chose suivante que j'ai essayé était:

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

Mais rien ne s'est passé. Des idées?

20
demandé sur Tshepang 2013-10-18 09:41:36

3 réponses

Si votre process object est une variable sur la pile( par exemple dans une méthode), le code ne fonctionnerait pas comme prévu parce que le processus que vous avez déjà commencé sera tué dans le destructeur de QProcess, lorsque la méthode de finitions.

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

vous devriez plutôt attribuer le QProcess objet sur le tas comme ça:

QProcess *process = new QProcess(this);
QString file = QDir::homepath + "/file.exe";
process->start(file);
22
répondu tomvodi 2013-10-18 06:25:19

si vous voulez que votre programme attende pendant que le processus est exécuté, vous pouvez utiliser

QProcess::execute(file);

au lieu de

QProcess process;
process.start(file);
6
répondu nv95 2015-11-17 17:44:15

QDir::homePath ne prend pas fin avec le séparateur. Chemin valide vers votre exe

QString file = QDir::homePath + QDir::separator + "file.exe";
5
répondu nnesterov 2013-10-18 06:00:14