Установить переменные среды для startDetached () QProcess - PullRequest
0 голосов
/ 24 ноября 2010

В Qt4 есть QProcess :: setProcessEnvironment () для установки переменных Env для вновь создаваемого процесса.

Однако QProcess :: startDetached () является статической функцией-членом, поэтому setProcessEnvironment () не применяется. Как установить переменные Env для отдельного процесса в Qt?

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010

Это старая известная ошибка: http://bugreports.qt -project.org / browse / QTBUG-2284 . Вам необходимо перегрузить функцию startDetached для поддержки вашей собственной среды. Посмотрите на источники Qt, чтобы узнать, как это сделать: http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/io?h=5.5 (qprocess* файлы).

0 голосов
/ 13 октября 2015

Используя Qt5.5 сейчас, столкнитесь с этой проблемой.

Под Win7, Используемый код ниже, Установите среду в родительском процессе. Кажется, что подпроцесс наследует среду.Не точно, но в моем случае это сработало.

Надеюсь, есть лучшие решения

QString oldPath = qgetenv( "Path" );
QByteArray newPath = ( QCoreApplication::applicationDirPath() + ";" + oldPath ).toLocal8Bit();
bool bSet = qputenv("Path", newPath);
if ( !bSet )
{
    qDebug()<<"Failed";
}
...