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?
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);
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);
QDir::homePath ne prend pas fin avec le séparateur. Chemin valide vers votre exe
QString file = QDir::homePath + QDir::separator + "file.exe";