zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
|
|
1 | |
QDir::currentPath() и непонятное поведение08.01.2015, 02:24. Показов 6790. Ответов 34
Метки нет (Все метки)
у меня в программе есть след непонятка:
я читаю файл с настройками(там записаны директории с последними открытыми файлами), потом я открываю эти файлы(они сохраняются в файл настроек при closeEvent(QCloseEvent * event)). Вообщем а дальше у меня из папки с проектом загружаются всякие кнопки итп, и в силу того, что QDir::currentPath() меняется(я так понимаю это потому что я использую QDir в модели данных и просто), ничего естественно не загружается, да и файл с настройками сохраняется не туда. В итоге я в конструкторе сохраняю при открытии QDir::currentPath() , после чего вызываю QDir::setCurrent(beginDirectory); Это как-то неправильно всё...
0
|
08.01.2015, 02:24 | |
Ответы с готовыми решениями:
34
Непонятное поведение QTextEdit QDir QDir::Filters Непонятное поведение поведение TIM6 на STM32f4discovery Непонятное поведение |
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
|
08.01.2015, 14:36 | 2 |
Не понимаю ситуацию. Что мешает вместо абсолютных путей использовать относительные?
0
|
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
|
|
08.01.2015, 18:26 [ТС] | 3 |
0
|
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
|
|
08.01.2015, 22:45 [ТС] | 5 |
если бы я знал... у меня ещё не было столько свободного времени, чтобы почитать документацию, а во всяких Шлее и Бланшет я ответа не нашёл, почему оно себя так ведёт я не имею ни малейшего представления..
0
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
|
09.01.2015, 04:57 | 7 |
Да, да, именно то самое "эм?", потому как данных ты практически не привёл и остаётся только гадать что там у тебя и почему.
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
09.01.2015, 10:59 | 8 |
Шлее и Бланшет это выжимка, причем скупая, из документации. Первым делом нужно лезть в доку
0
|
205 / 165 / 41
Регистрация: 25.10.2013
Сообщений: 527
|
|
09.01.2015, 15:26 | 10 |
В корне не верно так писать. Шлее и Бланшет дают основы Qt и общее понимание. После их изучения уже можно лезть в доку.
0
|
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
|
||||||
09.01.2015, 16:22 | 12 | |||||
dzrkot,
1) не знаю как сейчас у тебя, но вообще для сохранения настроек лучше используй QSettings 2) Если тебе нужна именно папка приложения есть QCoreApplication::applicationDirPath(), но при деплое под OSX могут быть проблемы (в описании есть) 3) QDir::currentPath даже при старте приложения может отличатся от папки с приложением. (Для проверки запусти приложение из cmd не из текущей папки а из любой другой, прописав полный путь к exe). Это так, теория. А по сабжу как быстрый фикс можешь просто перед чтением файлов из папки с проектом и перед записью ini делать
0
|
09.01.2015, 16:31 | 13 | |||||
Именно для этого не советовал бы, файлы станут не человеко-читаемыми если будут содержать ссылки.
Это нормальное поведение, с которым нужно считаться.
0
|
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
|
|
09.01.2015, 16:49 | 14 |
Для чего? Для сохранения списка последних открытых каталогов? Почему? Приведи пример.
Мы то с тобой в курсе, а тс возможно нет, и именно для него я это написал. Хорошие решения в п.1 и п.2 описаны, а это . В любом случае это лучше предложенного тобой решения
0
|
09.01.2015, 17:00 | 15 |
Пример чего? QSettings искажает кириллические символы ( и даже пробел) урл-кодированием.
Добавлено через 51 секунду Я ничего не предлагал, ибо пока не вижу проблемы. Добавлено через 5 минут По поводу 2 так это тоже что и быстрый фикс. Если ваша программа запускается из консоли или из другой программы или ярлыком нужно просто позаботится о выставлении рабочей папки, и не привязываться к абсолютным путям.
0
|
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
|
|
09.01.2015, 17:18 | 16 |
1) об этом сказано в документации и ничто не мешает utf кодек
2) под виндой стандартный контейнер для QSettings - реестр, как следствие проблема отсутствует Вот именно Что и делает QDir::setCurrent(QCoreApplication::applicationDirPath()); И у ТС'а (насколько понятно из стартпоста) нет привязки к абсолютным путям ему надо загрузить ресурсы относительно папки приложения (п.2) и туда же сохранить настройки
0
|
09.01.2015, 17:36 | 17 |
arrjj, Через QSettings::setIniCodec ? Сами то пробовали? Оно не помогает, ключи/разделы как и прежде кодируются как и юрл, что не нормально.
Записывать списки файлов в реестр? А папка приложения это не абсолютный путь? В данном случае то что вы называете папкой приложение это папка исполняемого файла, а к ней не стоит привязываться. Вдруг пользователь захочет запускать программу с разными настройками путем смены рабочей папки?
0
|
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
|
|
09.01.2015, 17:56 | 18 |
ну не знаю... общего стандарта то нет, кто как хочет так и пишет (касательно Qt). Да и вообще ИМХО задавать настройки кириллицей не есть хорошо.
Записывать списки последних открытых файлов - вполне норм. ну а это уже как автор захочет делать
0
|
09.01.2015, 18:00 | 19 |
Не знаю в С++Builder использовал кириллицу не боясь. И что это за решение такое кодировать тектовый формат файла в урл-стиле?
Почему нет? А как же интернацианализация? А как же пользователи?
0
|
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
|
|
09.01.2015, 19:18 | 20 |
ИМХО от рабочей папки не должна зависеть работоспособность программы. И конфиги и ресурсы должны быть в одном месте. Если программа в своём концепте предусматривает такую возможность, то обычно ей добавляют необходимые ключи запуска (abc.exe -config="/dev/null").
Текущая рабочая директория естественно должна обрабатываться, но только в тех программах, где это действительно необходимо и оправдано (например ls/dir ) Слабо себе представляю почему в конфиге должны быть ключи не на латинице. Обычно они хардкодятся в приложении. Ну и плюс совместимость с 1-байтовой кодировкой. это не url-encoding это ascii-encoding \xHHHH - вполне годный способ впихнуть многобайтовую кодировку в однобайтовую. И не стоит этого боятся - Qt всё переконвертит за нас.
0
|
09.01.2015, 19:18 | |
09.01.2015, 19:18 | |
Помогаю со студенческими работами здесь
20
Непонятное поведение ОС Непонятное поведение Непонятное поведение функции Непонятное поведение Скайпа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |