0

我正在开发一个 Qt 项目,我希望为程序动态设置工作目录,以便在不同的系统上运行。

我附上了代码供您参考。

QProcess Home;
Home.start("echo",QStringList() << "$HOME");
Home.waitForFinished(-1);
qDebug() << Home.readAllStandardOutput();

但是 qDebug() 打印“$HOME”而不是实际的主路径。为什么会这样?有没有其他方法可以做到这一点?

4

4 回答 4

3

您可以使用std::getenv来检索进程环境中设置的主路径。

#include <cstdlib>

const char *homePath = std::getenv("HOME");
if(homePath != NULL)
{
    QProcess Home;
    Home.start("echo",QStringList() << homePath);
    Home.waitForFinished(-1);
    qDebug() << Home.readAllStandardOutput();
}
于 2013-07-02T05:08:22.030 回答
1

这是另一种方法。

QStringList QProcess::systemEnvironment () [static]

http://qt-project.org/doc/qt-4.8/qprocess.html#systemEnvironment

 QStringList environment = QProcess::systemEnvironment();
  // environment = {"PATH=/usr/bin:/usr/local/bin",
  //                "USER=greg", "HOME=/home/greg"}

希望有帮助。

于 2013-07-02T05:30:04.790 回答
0

QByteArray qgetenv ( const char * varName )是 QT 库提供的用于在所有平台上获取任何环境变量的函数。

getenv() 似乎在 Windows VS2005 上已被弃用,更多信息在这里

于 2013-07-02T07:13:00.370 回答
0

特别是对于主路径,您应该使用 QDir::homePath()

于 2013-07-02T12:11:38.430 回答