crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Сохранение настроек в домашнюю дерикторию, linux
RazrFalcon
  опции профиля:
сообщение 30.1.2011, 4:14
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Нужно сохранить в
~/.config/my_config.ini
ну или
$HOME/.config/my_config.ini

Не один вариант не пашит.
Как правильно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
RazrFalcon
  опции профиля:
сообщение 30.1.2011, 4:40
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Мне нужно сохранить файл настроек в домашнюю директорию на linux

Делаю так

    QFile file("/home/razrfalcon/.config/config.ini");
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
        return;
    QTextStream out(&file);
    out<<timeBox->value()<<endl;
    out<<time_label->text()<<endl<<endl;
    file.close();

Вопрос, как сохранять туда же, но без своего ника.
То есть не
/home/razrfalcon/.config/config.ini
а
~/.config/config.ini

Я же не знаю какой ник человека который будет ставить мою "прогу".

Можно конечно через QProcess узнать имя uname -n и подставить, но я думаю есть другой вариант.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 14.6.2012, 23:34
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(RazrFalcon @ 30.1.2011, 5:40) *
Мне нужно сохранить файл настроек в домашнюю директорию на linux

QFile file("/home/razrfalcon/.config/config.ini");


1.По стандарту конфиги должны лежать не тупо в ~/.config, а должна учитываться переменная $XDG_CONFIG_HOME. Обычно она не задана и тогда используется $HOME/.config, но пользователь может ее менять. Поэтому имя директории можно получить так:

  QString configHome = QProcessEnvironment::systemEnvironment().value("XDG_CONFIG_HOME");
    if (configHome.isEmpty())
        configHome = QProcessEnvironment::systemEnvironment().value("HOME") + "/.config";


2. ~/.config/config.ini - не хорошее имя, слишком общее, велика вероятность конфликта. Лучше использовать ~/.config/ИМЯ_ПРОГРАММЫ/config.conf или если не нужна поддиректория, то ~/.config/ИМЯ_ПРОГРАММЫ.conf

3. Как уже сказали, используй QSettings, там все укрено до вас ($XDG_CONFIG_HOME учитывается)
QSettings settings("super_programm", "config");
settings.setValue("Group/key", "Value");
settings.sync();
Создаст файл "~/.config/super_programm/config.conf"

а
QSettings settings("super_programm");
settings.setValue("Group/key", "Value");
settings.sync();
Создаст файл "~/.config/super_programm.conf"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


12 чел. читают эту тему (гостей: 12, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 10.1.2025, 7:13