Возврат текущего каталога

Аватар пользователя mokynis

есть 2 исполняемых файла. Оба лежат в одном и том же каталоге. Один сделан в текстовом редакторе, второй-проект QT.
В обоих есть строка:
cout<), второй пишет мне мой домашний каталог. А мне надо, чтобы QT-программа определила, откуда ее запустили. Там по идее потом должна информация из другого файла браться, а лежать он будет рядом с этой QT-программой. Имя файла задано жеско, а вот где в каком каталоге все это будет лежать, заранее не известно. Может какой-нибудь другой способ есть узнать местоположение?

Аватар пользователя Meloman

возврат текущего каталога

mokynis писал(а):
А мне надо, чтобы QT-программа определила, откуда ее запустили.

QString tmp = QDir::currentPath (); (но я проверял на Qt4).

Аватар пользователя mokynis

возврат текущего каталога

у меня, увы, версия 3.3.4 (с ASP Linux 11 в комплекте шла), там такой функции нет. Есть Dir::currentDirPath() и QDir::current().absPath(), но они по-прежнему возвращают домашний каталог. Сам бы написал, да не знаю за что тут взяться.
Мы, кстати, земляки, я из Салехарда.

Аватар пользователя Meloman

возврат текущего каталога

Я не смог скомпилировать под Qt3. Что-то не складывается у меня дружба с этой версией. Думаю, что можно сделать такую конструкцию:
QDir::current ().path() (а не absPath() ). Почитайте еще доку по C/C++ : Где-то попадался пример, когда получается текущий каталог из системных переменных... По-моему,- char *argv[].

Аватар пользователя mokynis

возврат текущего каталога

cuttent().path() выдает тот же домашний каталог, что и absPath().
Вот с argv[0] получается лучше-показывает каталог программы, но сам *argv[] я могу увидеть только в main.cpp, а из формы (...ui.h) аргументов командной строки не видать. Я так и не понял как их туда передать можно. В main.cpp есть строки
QApplication a( argc, argv );
myform w;
w.show();
Вот после show() их уже нет. Пытался обратиться из формы к a->argv[] - фигушки, оттуда и "а" уже неизвестна.

Аватар пользователя Meloman

возврат текущего каталога

mokynis писал(а):
Вот с argv[0] получается лучше-показывает каталог программы, но сам *argv[] я могу увидеть только в main.cpp, а из формы (...ui.h) аргументов командной строки не видать. Я так и не понял как их туда передать можно.

Скорее всего- в глобальную переменную можно передать.
Ведь Вы же в main.cpp вызываете форму, обработку которой делаете в другом cpp-файле, так ведь?

Аватар пользователя mokynis

Re: возврат текущего каталога

Спасибо, я так и сделал. Теперь все ОК

Аватар пользователя Гость

Re: возврат текущего каталога

Определить каталог из которого запущена программа гораздо проще из QApplication::applicationDirPath() который собственно из *argv[] эту информацию и получает при создании.

RSS-материал