QDir absolutePath для Mac

Я получаю два разных пути, когда я запускаю одну и ту же сборку в Qt Creator и когда я дважды щелкаю по ней из Finder на Mac.

Вот мой код:

QDir dir = QDir::currentPath();
dir.cdUp();
dir.cdUp();
dir.cdUp();
QString rootPath = dir.absolutePath();

Когда я запускаю его (режим отладки) в Qt Creator, мой путь:

/ Users / MyUser / Проекты / AppName / сборки / макинтош

Когда я дважды нажимаю на файл, который находится на
/ Users / myyser / Projects / AppName / build / mac из поиска
/ только.

Зачем мне два разных пути?

Версия: Qt5.2.1

Обновить

Похоже, это ошибка чтения следующего URLhttp: //qt-project.org/forums/viewthread/34019

2

Решение

Зачем мне два разных пути?

Когда они пишут в связанном вами потоке, QDir :: currentPath () не обязательно возвращает каталог приложения. Он будет возвращать путь от места запуска приложения, который будет отличаться от каталога приложения при запуске приложения из командной строки или даже из «меню пуска», и т. Д.

Если вы хотите иметь дело с каталогом приложения для навигации оттуда, вам нужно будет использовать следующий метод:

QString QCoreApplication :: applicationDirPath () [статические]

Возвращает каталог, содержащий исполняемый файл приложения.

Например, если вы установили Qt в каталог C: \ Qt и запустили пример регулярного выражения, эта функция вернет «C: / Qt / examples / tools / regexp».

В Mac OS X это будет указывать на каталог, фактически содержащий исполняемый файл, который может находиться внутри пакета приложения (если приложение связано).

Последнее предложение даже разъясняет случай Mac OS X.

1

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

Текущий каталог может быть любым, он зависит только от того, как запущен ваш процесс. Пока что вы показали, что Qt Creator и Finder запускают процесс с другого текущего каталога, вот и все.

Единственное использование для currentPath не устанавливая это сначала, что я могу придумать, находится в командной строке / консольных приложениях. Почему вы думаете, что нужно использовать это? Для чего?

1

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