Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ruzik от Май 20, 2012, 11:49



Название: Изменение значений QDir::currentPath()
Отправлено: ruzik от Май 20, 2012, 11:49
Здравствуйте, у меня есть, скажем, такой код:
Код:
    label->setText(QApplication::applicationFilePath());
    label_2->setText(QDir::currentPath());
При старте программы путем её открывания самому получаю следующее результаты:
label = C:/Program files/ProgramName/program.exe
label_2 = C:/Program files/ProgramName
То есть все правильно.
Далее я добавляю программу в автозагрузку, путем добавления её в реестр(OS = Windows 7)
И при старте программы получаю следующие результаты:
label = C:/Program files/ProgramName/program.exe
label_2 = C:/Windows/system32
То есть почему-то QDir::currentPath() возвращает системный путь, хотя само приложение осталось на своем месте.
В справке сказано:
Цитировать
QString QDir::currentPath () [static]
Returns the absolute path of the application's current directory.
То есть должен вернуться вот такой путь: C:/Program files/ProgramName
Я знаю как можно обойти эту проблему, но вопрос:
Так должно быть или это моя ошибка?


Название: Re: Изменение значений QDir::currentPath()
Отправлено: V1KT0P от Май 20, 2012, 11:57
Да так и должно быть. Именно поэтому существует функция QApplication::applicationDirPath().
Смысл вот этого:
Цитировать
Returns the absolute path of the application's current directory.
Не в том что оно возвращает текущую директорию в котором лежит приложение. А текущую директорию приложения, что есть две большие разницы. Тоже-самое запусти программу из QtCreator-а, он тоже текущую директорию меняет(по крайней мере в теневом режиме на один уровень вверх).


Название: Re: Изменение значений QDir::currentPath()
Отправлено: ruzik от Май 20, 2012, 14:09
Понятно, спасибо за разъяснение


Название: Re: Изменение значений QDir::currentPath()
Отправлено: Странник от Май 21, 2012, 02:10
QDir::currentPath() возвращает т.н. рабочую директорию. она совпадает с директорией, в которой лежит приложение, если не указано иного (в параметрах ярлыка, или при запуске из консоли).