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

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

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: Спасите!!! файлы Ui  (Прочитано 22259 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #15 : Ноябрь 10, 2009, 10:13 »

дерево в дизайнере заполняется в функции SetupUi. И просто повторяется вызов этой функции.
Ты можешь конечно написать свою функцию добавляющую, скажем 10 итемов, и звать ее при открытии программы. А смысл такой статики?

Это как "почему я создаю файл, он пустой и если я создам новый то он тоже будет пустой, а если я туда напишу чего-нибудь, этого не будет при создании еще одного"
Записан
olefard
Гость
« Ответ #16 : Ноябрь 10, 2009, 10:19 »

А как тогда правильно сделать...сохранить дерево при помощи Settings?Непонимающий
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #17 : Ноябрь 10, 2009, 10:43 »

ты сохранить стейт окна попробовал? я просто не работал с этой фичей и хз какие параметры он запоминает

Код:
где-то объявлено QSettings settings;

void saveItem(QTreeWidgetItem* item)
{
    settings.beginGroup(item->data(0, Qt::DisplayRole));
    settings.setValue("1", item->data(1, Qt::DisplayRole));
    settings.setValue("2", item->data(2, Qt::DisplayRole)); //и тд
    for(int i = 0; i < item->childCount(); i++) {
          QTreeWidgetItem* child = item->child(i);
          saveItem(child);
    }
    settings.endGroup();
}

voidSaveTree()
{
    settings.beginGroup("tree");
    saveItem(topItem)
    for(int i = 0; i < treeWidget->topLevelItemCount(); i++) {
          QTreeWidgetItem* item= treeWidget->takeTopLevelItem(i);
          saveItem(item);
    }
    settings.endGroup();
}
Чтение надо делать с помощью childGroups - вошли в группу "tree" и дальше рекурсивно
Записан
olefard
Гость
« Ответ #18 : Ноябрь 10, 2009, 10:53 »

да у меня собственно в дереве не иерархическая структура...типа простого списка...попробую сделать
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #19 : Ноябрь 10, 2009, 11:00 »

со списком проще, не нужно рекурсии. Это общий вариант. Мб можно и проще...
Записан
olefard
Гость
« Ответ #20 : Ноябрь 10, 2009, 11:13 »

то есть мне сначально надо перегрузить событие закрытия окна и там делать сохранение дерева...Непонимающий
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #21 : Ноябрь 10, 2009, 11:17 »

можно в деструкторе главного окна
Записан
olefard
Гость
« Ответ #22 : Ноябрь 10, 2009, 11:23 »

 а можно описать ход действий...просто возникают сразу вопросы: сохранять состояние всего окна или можно только treeWidget??? использовать чтение сохраненного состояния при создании экземпляра класса окна???
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #23 : Ноябрь 10, 2009, 11:29 »

где сохранять - решать тебе. Вообще логично, что настройки окна (в частности триВиджета) должны читаться\сохраняться когда окно создается удаляется (т.е. в конструкторе\деструкторе). Единственный совет - сделать отдельными функциями, прозе будет переделать если вдруг захочется. Однако часто чтение настроек выносят в мейн, а запись бывает раскидана по коду (т.е. сохраняется напрямую в момент редактирования - по кнопке Apply допустим в неком диалоге).
Записан
olefard
Гость
« Ответ #24 : Ноябрь 10, 2009, 11:39 »

А сохранять можно только тривиджет, точнее мне нужно, чтоб сохранилось название итемов и установленные данные для них, а все остальное можно не сохранять, ну там место положение и т.д., и остальные виджеты на окне?НепонимающийНепонимающийНепонимающийНепонимающий?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #25 : Ноябрь 10, 2009, 11:42 »

конечно
Записан
olefard
Гость
« Ответ #26 : Ноябрь 10, 2009, 11:43 »

сейчас попробую...спасибо что помагаешь!!!
Записан
olefard
Гость
« Ответ #27 : Ноябрь 10, 2009, 11:44 »

*помогаешь Смеющийся
Записан
olefard
Гость
« Ответ #28 : Ноябрь 10, 2009, 13:39 »

попытка оказалась не удачной Грустный Приложение вылетает, когда пытаюсь создать окно, в котором будут сохраняться настройки
запись насроек
Код:
void Form3::writeSettings()

{  QTreeWidgetItem* item;
    QSettings settings("Tr", "App");
    //for(int i = 0; i < treeWidget->topLevelItemCount(); i++) {
          //QTreeWidgetItem* item= treeWidget->takeTopLevelItem(i);
          settings.setValue("1", item->data(0, Qt::DisplayRole));
          settings.setValue("2", item->text(0));
   // }

}

чтение настроек
Код:
void Form3::readSettings()

{
    QSettings settings("Tr", "App");
    QString str = settings.value("2").toString();
    m_ui.treeWidget->topLevelItem(0)->setText(0, str);
}

Код:
void Form3::closeEvent(QCloseEvent *event)

{

        writeSettings();
         event->accept();

}
readSettings в конструкторе
В чем может быть дело?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #29 : Ноябрь 10, 2009, 13:50 »

  QTreeWidgetItem* item; // кто она? значение присвой
Записан
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


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