2010-11-15 5 views
3

я пытаюсь запустить Internet Explorer, поэтому я использую ниже кодQt - QProcess не работает

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

Но это не работает.

ответ

6

Try:

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

Вы должны использовать кавычки экранированы, так как путь имеет место в нем, или, возможно, избежать всех пространств (вы пропустили Program\ Files в коде вы публикуемую).

+0

Большое спасибо, вы очистили мою головную боль – prabhakaran

+2

Даже проще, чем экранирование: используйте startDetached (temp, QStringList()). Это сделает сам побег. Я всегда предпочитаю вариант QProcess :: start/startDetached и т. Д., Который принимает аргументы как QStringList, чтобы избежать проблем с цитированием. –

+1

@Frank: почти, но проблема в том, что имя программы имеет пробелы, а не аргументы, поэтому вам все равно нужно указывать или удалять путь. –

1

Как насчет этого?

QDir dir("C:\\"); 
QProcess::execute("explorer.exe", QStringList() << dir.toNativeSeparators(dir.path())); 
Смежные вопросы