Russian Qt Forum
Ноябрь 24, 2024, 19:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Изменение значений QDir::currentPath()  (Прочитано 4397 раз)
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
Я знаю как можно обойти эту проблему, но вопрос:
Так должно быть или это моя ошибка?
Записан
V1KT0P
Гость
« Ответ #1 : Май 20, 2012, 11:57 »

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

Понятно, спасибо за разъяснение
Записан
Странник
Гость
« Ответ #3 : Май 21, 2012, 02:10 »

QDir::currentPath() возвращает т.н. рабочую директорию. она совпадает с директорией, в которой лежит приложение, если не указано иного (в параметрах ярлыка, или при запуске из консоли).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 21.