2010-11-15 72 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

尝试:

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

您需要使用转义引号,因为路径它有一个空间,或可能逃跑的所有空间(你错过了你发布的代码Program\ Files)。

+0

非常感谢,您清除了我的头痛 – prabhakaran 2010-11-15 15:24:35

+2

甚至比转义更容易:使用startDetached(temp,QStringList())。那个人会逃避自己。我总是喜欢QProcess :: start/startDetached等变体,它将参数作为QStringList使用,以避免引用问题。 – 2010-11-15 15:42:33

+1

@Frank:差不多,但问题是程序名称中有空格而不是参数,所以你仍然需要引用或转义路径。 – 2010-11-15 17:07:26

1

那怎么样?

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