Russian Qt Forum

Qt => Общие вопросы => Тема начата: Jkc от Март 24, 2005, 11:24



Название: Как сохранять програмные настройки.
Отправлено: Jkc от Март 24, 2005, 11:24
Приветствую всех.
Мне нужно что бы после завершения программы сохранялись мои настройки, это CheckBox, загрузка из файла QListView и т.п. Слыхал что нужно делать ini фаил. Кто может помочь примером помогите.


Название: Re: Как сохранять програмные настройки.
Отправлено: Hellenna от Март 24, 2005, 11:42
Цитата: "Jkc"
Приветствую всех.
Мне нужно что бы после завершения программы сохранялись мои настройки, это CheckBox, загрузка из файла QListView и т.п. Слыхал что нужно делать ini фаил. Кто может помочь примером помогите.

насчет ini не знаю, в винде давно не программлю, но в QSettings сохранять очень удобно.
Смотри в сторону QSettings::readEntry(...) и QSettings::writeEntry(...).
Небольшой пример:
Код:
//сохранение настроек (например, в деструкторе)
QSettings settings;
settings.WriteEntry("/my_programm/check_box_state", my_check_box->isChecked());

//восстановление (например, в конструкторе)
QSettigns settings;
my_check_box->setChecked(settigns.readBoolEntry("/my_programm/check_box_state", false));


Название: Re: Как сохранять програмные настройки.
Отправлено: Jkc от Март 25, 2005, 12:02
Смотри в сторону QSettings::readEntry(...) и QSettings::writeEntry(...).
Небольшой пример:
Код:
//сохранение настроек (например, в деструкторе)
QSettings settings;
settings.WriteEntry("/my_programm/check_box_state", my_check_box->isChecked());
//восстановление (например, в конструкторе)
QSettigns settings;
my_check_box->setChecked(settigns.readBoolEntry("/my_programm/check_box_state", false));
[/quote]

А как быть с QListView?
Как правильно  загрузить записи при старте?


Название: Как сохранять програмные настройки.
Отправлено: Hellenna от Март 25, 2005, 13:51
нафантозировала с ходу следующее:

Код:
//сохранение
QString list="";
QListViewItemIterator it( my_list_view );
 while ( it.current() ) {
            QListViewItem *item = it.current();
            list+=item->text(col)+"|"; //сol - номер cтолбца из которого надо текст, при желании можно пребрать все.
            ++it;
 }

QSettings settings;
settings.writeEntry("/my_pog/list_view_items", list);

//восстановление
list=settigns.readEntry("/my_prg/list_view_items", "");
int i=list.contain("|");
for(int j=0; j<i; j++){
     QListViewItem *thisItem=new QListViewItem(my_list_view, list.section("|", i, i));
     my_list_view->insertItem(thisItem);
}


Здесь точно есть недостаток - не восстанавливется вложенность записей. Т.е. все записи восстанавливаются как topLevel. Но это можно  вылечить по анологии.


Название: Re: Как сохранять програмные настройки.
Отправлено: Zigmar от Март 27, 2005, 01:12
Цитата: "Jkc"
А как быть с QListView?
Как правильно  загрузить записи при старте?

QListView с иерархией, логичнее всего сериализировать в XML. См. "XML Module".