Russian Qt Forum

Qt => Общие вопросы => Тема начата: billygates от Март 02, 2010, 11:44



Название: [РЕШЕНО] QSettings: получить path dir
Отправлено: billygates от Март 02, 2010, 11:44
В зависимости от операционной системы, настройки, хранящиеся и читающиейся с помощью QSettings, хранятся в разных местах на файловой системе. Есть у меня инициализированный с помощью organization и application QSettings, как у него узнать в какую директорию будет писать мой конфиг? Самому сконструировать .config_dir + organization + application я и сам могу. Я хочу чтобы это не зависило от ОС и было униформенным. Что-то в документации нет ничего подходящего.


Название: Re: QSettings: получить path dir
Отправлено: Akaiten от Март 02, 2010, 12:22
QSettings::fileName() не работает?


Название: Re: QSettings: получить path dir
Отправлено: kuzulis от Март 02, 2010, 13:55
Цитировать
Есть у меня инициализированный с помощью organization и application QSettings, как у него узнать в какую директорию будет писать мой конфиг?
А зачем?

Если Вы хотите сделать один конфиг для программы - то сами придумайте файл конфига и путь куда его сохранять/читать.
В *.nix - это обычно /etc, в Win - можно использовать путь ../Program Files/<Ваша программулина>/

Но, ИМХО, это "не айс", т.к. сразу отсекает возможность конфигурирования программы от обычного пользователя + нет возможности для каждого пользователя иметь свои настройки, поэтому, я бы не заморачивался по этому поводу.

А по умолчанию QSettings пишет конфиги в *.nix - /home/User/<Ваша программка> , в Win - /Documents and settings/User/Application Data/<Ваша программка> (если не ошибаюсь)

PS: все-же описано в ассистенте


Название: Re: QSettings: получить path dir
Отправлено: billygates от Март 02, 2010, 14:22
QSettings::fileName() не работает?
Прозевал. Кажется оно. Спасибо. Вопрос снят.

Но, ИМХО, это "не айс", т.к. сразу отсекает возможность конфигурирования программы от обычного пользователя + нет возможности для каждого пользователя иметь свои настройки, поэтому, я бы не заморачивался по этому поводу.
Я разве где-то писал, что я хочу хранить свой конфиг по нестандартному пути?

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


Название: Re: [РЕШЕНО] QSettings: получить path dir
Отправлено: NicK от Март 02, 2010, 15:58
Код
C++ (Qt)
QString getApplicationDataPath(void)
/*static function to determine the application directory
the directory is returnded WITH a trailing slash*/

{
   static QString path;
   if (!path.isEmpty()) return path;
 
   /* if we havn't yet done so, determine the full db file name and make sure the directory exists
        determine path for application data dirs*/

   #ifdef Q_OS_WIN32
       wchar_t buf[MAX_PATH];
       if (!SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, 0, buf))
               path = QString::fromUtf16((ushort *)buf)+"/";
       else
               path = QDir::homePath()+"/Application Data/"; // this shouldn't happen
   #else
       path = QDir::homePath()+"/";
   #endif
 
   /*create subdir*/
   QDir dir(path);
   dir.mkdir(".MY_PROG_NAME");
   path += ".MY_PROG_NAME/";
 
   return path;
}