Использование $ HOME в Qt

Я работаю над проектом Qt и хочу, чтобы рабочие каталоги были динамически установлены, так как программа будет работать на разных системах.

Я приложил код для вашей справки.

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

Но qDebug () печатает «$ HOME», а не фактический домашний путь. Почему это происходит? Есть ли другой способ сделать это?

0

Решение

Ты можешь использовать 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();
}
3

Другие решения

Вот еще один способ сделать это.

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

Надеюсь, это поможет.

1

QByteArray qgetenv (const char * varName) это функция, предоставляемая библиотекой QT для извлечения любой переменной среды на всех платформах.

getenv () устарела в Windows VS2005 и выше больше информации здесь

0

Специально для домашнего пути вы должны использовать QDir :: homePath ()

0
По вопросам рекламы [email protected]