Russian Qt Forum

Qt => Общие вопросы => Тема начата: catprog от Октябрь 14, 2010, 14:42



Название: как задать относительный путь к файлу
Отправлено: catprog от Октябрь 14, 2010, 14:42
Вот такой код:
Код:
...
QFile some_file("myfile.txt");
if (some_file.open(QIODevice::Append | QIODevice::Text))
...
если запустить программу вручную открывает файл в папке с программой, а вот если программу запустить через cron, то файл создается в другой папке.
А как можно сделать так чтобы файл открывался в любом случае из папки с программой и при этом не прописывать абсолютный путь?


Название: Re: как задать относительный путь к файлу
Отправлено: NicK от Октябрь 14, 2010, 15:29
Цитировать
QString QCoreApplication::applicationDirPath () [static]


Название: Re: как задать относительный путь к файлу
Отправлено: catprog от Октябрь 14, 2010, 19:16
Спасибо, эта штука возвращает одинаковый ответ в обоих случаях)


Название: Re: как задать относительный путь к файлу
Отправлено: chu от Декабрь 06, 2010, 11:49
пишу так:
Код:
    logo = new QLabel(this);
    logo->setPixmap(QPixmap(QCoreApplication::applicationDirPath() + "logo.jpg"));
почему картинка не появляется?


Название: Re: как задать относительный путь к файлу
Отправлено: BRE от Декабрь 06, 2010, 11:51
А ты попробуй посмотреть, что получается после этой конструкции:  :)
Код
C++ (Qt)
qDebug() << QString( QCoreApplication::applicationDirPath() + "logo.jpg" );
 


Название: Re: как задать относительный путь к файлу
Отправлено: deaks от Декабрь 06, 2010, 12:41
absolutePath - возвращает строку без слэша в конце, и вы его не добавили, поэтому и ищет не там


Название: Re: как задать относительный путь к файлу
Отправлено: chu от Декабрь 06, 2010, 13:52
А ты попробуй посмотреть, что получается после этой конструкции:  :)
Код
C++ (Qt)
qDebug() << QString( QCoreApplication::applicationDirPath() + "logo.jpg" );
 

в консоли приложения выскакиевает:
"C:/Qt/zavod-build-desktop/debuglogo.jpg"
картинка не отображается. В чем суть использования qDebug()?

absolutePath - возвращает строку без слэша в конце, и вы его не добавили, поэтому и ищет не там
спасибо! помогло, но при переносе программы на другой комп, картинка не отображается


Название: Re: как задать относительный путь к файлу
Отправлено: deaks от Декабрь 06, 2010, 14:48
А ты попробуй посмотреть, что получается после этой конструкции:  :)
Код
C++ (Qt)
qDebug() << QString( QCoreApplication::applicationDirPath() + "logo.jpg" );
 

в консоли приложения выскакиевает:
"C:/Qt/zavod-build-desktop/debuglogo.jpg"
картинка не отображается. В чем суть использования qDebug()?

absolutePath - возвращает строку без слэша в конце, и вы его не добавили, поэтому и ищет не там
спасибо! помогло, но при переносе программы на другой комп, картинка не отображается

qDebug - разве непонятно по названию?))нужен для вывода отладочной информации в процессе работы

странно, а вы картинку положили рядом с экзешником?


Название: Re: как задать относительный путь к файлу
Отправлено: DOOMer от Декабрь 06, 2010, 14:53
Код
C++ (Qt)
QString( QCoreApplication::applicationDirPath() +  QDir::toNativeSeparators(QDir::separator())  + "logo.jpg" );


Название: Re: как задать относительный путь к файлу
Отправлено: shirushizo от Декабрь 06, 2010, 18:00
спасибо! помогло, но при переносе программы на другой комп, картинка не отображается
А в папке с бинарником папка imageformats есть? В ней соответствующая dll должна быть, иначе только PNG будет работать.


Название: Re: как задать относительный путь к файлу
Отправлено: deaks от Декабрь 07, 2010, 00:06
А в папке с бинарником папка imageformats есть? В ней соответствующая dll должна быть, иначе только PNG будет работать.

эээ....можно ссылку на доку, где это написано?


Название: Re: как задать относительный путь к файлу
Отправлено: shirushizo от Декабрь 07, 2010, 18:35
Если честно доков с данной информацией не видел =) Почти весь функционал Qt хранится в соответствующих плагинах. Все они лежат в %QtDir%/qt/plugins. Путь к этим плагинам (библиотекам) надо указать в переменных окружения или хранить в папке с бинарником.


Название: Re: как задать относительный путь к файлу
Отправлено: deaks от Декабрь 07, 2010, 19:12
ну так что же вы вводите людей в заблуждение про only png ?)


Название: Re: как задать относительный путь к файлу
Отправлено: shirushizo от Декабрь 07, 2010, 20:00
Мда... Qt без подключения плагинов только png отображает, а отсутствие пруфлинка этого не отменяет!


Название: Re: как задать относительный путь к файлу
Отправлено: BRE от Декабрь 07, 2010, 20:04
Это все зависит от того, как Qt собрано.  :)


Название: Re: как задать относительный путь к файлу
Отправлено: shirushizo от Декабрь 07, 2010, 20:25
ну так что же вы вводите людей в заблуждение про only png ?)
Переименуй папку и посмотри \qt\plugins\imageformats) Специально проверил для сборки по дефолту=)

Это все зависит от того, как Qt собрано.  :)
Кстати, да... вот об этом не подумал
Судя по вопросу про qDebug() и пути "C:/Qt/zavod-build-desktop/debug/logo.jpg", установлено из бинарника.


Название: Re: как задать относительный путь к файлу
Отправлено: chu от Декабрь 08, 2010, 14:26
добавил в папку с бинарником "imageformats" - картинка заработала на всех компах.
спасибо!