2010-11-15 62 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()));