C++ Qt-QProcess不工作

C++ Qt-QProcess不工作,c++,user-interface,qt,qprocess,C++,User Interface,Qt,Qprocess,我尝试启动internet explorer,因此使用以下代码 QProcess * process=new QProcess(this); QString temp="C:\\Program Files\\Internet\ Explorer\\iexplore.exe"; process->startDetached(temp.toStdString().c_str()); 但是它不起作用。怎么样 QDir dir("C:\\"); QProcess::execute("explor

我尝试启动internet explorer,因此使用以下代码

QProcess * process=new QProcess(this);
QString temp="C:\\Program Files\\Internet\ Explorer\\iexplore.exe";
process->startDetached(temp.toStdString().c_str());
但是它不起作用。

怎么样

QDir dir("C:\\");
QProcess::execute("explorer.exe", QStringList() << dir.toNativeSeparators(dir.path()));
QDir目录(“C:\\”;
QProcess::execute(“explorer.exe”,QStringList()尝试:


您需要使用转义引号,因为路径中有一个空格,或者可能转义所有空格(您在发布的代码中遗漏了
Program\Files

甚至比转义更简单:使用startDetached(temp,QStringList())。这一个将自己进行转义。我总是更喜欢QProcess::start/startDetached等的变体,它将args作为QStringList,以避免引用问题。@Frank:差不多,但问题是程序名中有空格而不是参数,所以您仍然需要引用或转义路径。不,您不需要。如果您使用QStringList()重载时,没有必要引用。QProcess::startDetached(QLatin1String(“/path/to/Foo-Bar”),QStringList()工作,而QProcess::startDetached(QLatin1String(“/path/to/Foo-Bar”))失败。在前一种情况下,没有理由解释“Bar”作为参数,因为参数是分开传递的。Qt做了正确的事情,并在内部构建了正确的命令行。@Frank:Hm,以前从未实际使用过它,很高兴知道。
QProcess * process=new QProcess(this);
QString temp="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\"";
process->startDetached(temp);