2010-11-15 2 views
3

je tente de lancer Internet Explorer, j'utilise le code ci-dessousQt - QProcess ne fonctionne pas

QProcess * process=new QProcess(this); 
QString temp="C:\\Program Files\\Internet\ Explorer\\iexplore.exe"; 
process->startDetached(temp.toStdString().c_str()); 

Mais cela ne fonctionne pas.

Répondre

6

Essayez:

QProcess * process=new QProcess(this); 
QString temp="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""; 
process->startDetached(temp); 

Vous devez utiliser des guillemets échappées puisque le chemin a un espace, ou peut-être échapper à tous les espaces (vous avez manqué Program\ Files dans le code affiché).

+0

Merci beaucoup, Vous avez effacé mon mal de tête – prabhakaran

+2

Encore plus facile que d'échapper: utilisez startDetached (temp, QStringList()). Celui-là fera l'échappement lui-même. Je préférerais toujours la variante de QProcess :: start/startDetached etc. qui prend les arguments comme QStringList, pour éviter les problèmes de citation. –

+1

@Frank: presque, mais le problème est que le nom du programme a des espaces pas les arguments, de sorte que vous avez toujours besoin de citer ou d'échapper le chemin. –

1

Que pensez-vous de cela?

QDir dir("C:\\"); 
QProcess::execute("explorer.exe", QStringList() << dir.toNativeSeparators(dir.path()));