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

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


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Когда же ты научишься вопросы нормально задавать? Нечего не понятно, ни что сделать пытаешься, ни как? Что именно не пашет?
Где постановка задачи, где вопрос то сам? :ireful:

См. QSettings
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 30.1.2011, 4:40
Сообщение #3


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 и подставить, но я думаю есть другой вариант.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 30.1.2011, 4:43
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


RazrFalcon, ответ я тебе уже дал, смотри внимательнее предыдущее сообщение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 30.1.2011, 7:03
Сообщение #5


Участник
**

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

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




Репутация:   2  


Цитата(RazrFalcon @ 30.1.2011, 9:40) *
Мне нужно сохранить файл настроек в домашнюю директорию на 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 и подставить, но я думаю есть другой вариант.

для юниксов используют для узнавания имени пользователя функцию getlogin. Для определения домашнего каталога для пользователя и пр. индивидуальных сведений о пользователи getpwnam. Домашний каталог пользователя в юниксах может находится в каком угодно месте.

Сообщение отредактировал maint - 30.1.2011, 12:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 31.1.2011, 10:40
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

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




Репутация:   7  


Цитата(RazrFalcon @ 30.1.2011, 4:40) *
Я же не знаю какой ник человека который будет ставить мою "прогу".


Ник знать и не нужно. Человек, запустивший твою программу, запускает ее от своего имени (ну или если через sudo, то от имени "user"). Вобщем, читай как уже сказал igor_bogomolov, про QSettings.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 5.6.2012, 16:47
Сообщение #7





Гости








    


не спец в Qt но у меня работает

QDir::homePath() + QDir::separator() + "название файла"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 5.6.2012, 20:08
Сообщение #8





Гости








    


http://qt-project.org/doc/qt-4.8/qdesktops...rdLocation-enum
Ну или как в предыдущем варианте.
И кстати, QDir::cdUp, никто не отменял.
А всякие getlogin и прочие платформ депендед вещи, для таких задач фу-фу-фу.
QString sHomeDirectory;
QString sUserHome = QDesktopServices::displayName(QDesktopServices::HomeLocation);
QDir homeDirectory(sUSerHome);
if(!homeDirectory.cdUp())
{
  //нет прав даже на просмотр
}
sHomeDirectory = homeDirectory.canonicalPath();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 14.6.2012, 23:34
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 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"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 9.1.2025, 21:49