在Qt中使用$HOME

Using $HOME in Qt

本文关键字:HOME Qt      更新时间:2023-10-16

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

我随信附上了代码供您参考。

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

但是qDebug()打印的是"$HOME",而不是实际的主路径。为什么会发生这种情况?有其他方法吗?

您可以使用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();
}

这里有另一种方法。

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"}

希望能有所帮助。

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

getenv()似乎已在Windows VS2005上弃用。更多信息,请点击此处

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