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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Узнать путь к общесистемным настройкам  (Прочитано 5201 раз)
sergs
Гость
« : Май 03, 2016, 15:57 »

Существует ли в Qt кроссплатформенный способ получить расположение общесистемного каталога настроек/данных? Что-то вроде C:\Users\AllUsers\AppData в Windows, /usr/local/share в Linux и подобное в Mac.

Смотрел QDesktopServices, но он возвращает только пользовательские каталоги. В Qt5 есть класс QStandardPaths, но QStandardPaths::standardLocations(QStandardPaths::AppDataLocation) возвращает массив путей, а не один путь. Полагаться на порядок элементов в массиве и выдергивать нужный вручную не хочу, т.к. порядок может поменяться. Пробовал также использовать QStandardPaths::locate() и QStandardPaths::writableLocation() но оба метода возвращают пользовательский каталог. Неужели нет такой возможности?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Май 03, 2016, 16:17 »

Массив правильно возвращается, потому что в винде, например, настройки могут храниться в AppData/Local и в Roaming. Не говоря уж про реестр. Рекомендуемый, но не строго заданный путь - Roaming. QStandardPaths::standardLocation() (без s на конце) возвратит именно его, если тебе хочется один.
Записан
Vamireh
Гость
« Ответ #2 : Май 03, 2016, 19:46 »

Позволю себе пояснить:
В roaming рекомендуется хранить переносимые настройки, т.е. те, которые можно безбоязненно перенести (скопировать) на другую машину, например.
В local же - те, которые привязаны к конкретной машине/профилю, т.е. их перенос (копирование) может вызвать проблемы на другой машине.
Записан
sergs
Гость
« Ответ #3 : Май 11, 2016, 11:51 »

QStandardPaths::standardLocation() (без s на конце) возвратит именно его, если тебе хочется один.

Возможно, смотрю куда-то не туда, но здесь QStandardPaths::standardLocation() (без s на конце) отсутствует. Также, если правильно понял, методы locate() и writableLocation() возвращают разный результат в зависимости от пользователя, т.е. запуск под обычным юзером дает путь к пользовательскому каталогу, запуск под админом — к общесистемному.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Май 11, 2016, 12:41 »

возможно я перепутал с QStandardPaths::writableLocation()
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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