Russian Qt Forum

Qt => Model-View (MV) => Тема начата: UVV от Ноябрь 03, 2009, 10:04



Название: QTreeView, запомнить состояние
Отправлено: UVV от Ноябрь 03, 2009, 10:04
Хотелось бы запоминать состояние treeView, чтобы при отображении в следующий раз уровень раскрытия веток был такой же.
Какие для этого есть методы?


Название: Re: QTreeView, запомнить состояние
Отправлено: spectre71 от Ноябрь 03, 2009, 10:23
Хотелось бы запоминать состояние treeView, чтобы при отображении в следующий раз уровень раскрытия веток был такой же.
Какие для этого есть методы?


Когда в следующий раз?


Название: Re: QTreeView, запомнить состояние
Отправлено: UVV от Ноябрь 03, 2009, 10:35
После удаления и повторного создания модели. У меня одно treeView используется для отображения двух моделей.
Хотя /me задумался... а стоит ли её вообще удалить, не проще ли держать её в памяти...


Название: Re: QTreeView, запомнить состояние
Отправлено: spectre71 от Ноябрь 03, 2009, 10:49
После удаления и повторного создания модели. У меня одно treeView используется для отображения двух моделей.
Хотя /me задумался... а стоит ли её вообще удалить, не проще ли держать её в памяти...

1) Обычно не стоит удалять, но все зависит от конкретной задачи. В твоем случае удалять не надо.
2) К сожалению тролли не подумали о возможности хранении "Expanded" на уровне модели. QSet<QPersistentModelIndex> expandedIndexes; - в привате у QTreeView(QTreeViewPrivate)
Поэтому прийдется самому сохранять список раскрытых веток(например на момент перед заменой модели, получаем через bool QTreeView::isExpanded ( const QModelIndex & index ) const) и восстанавливать через void QTreeView::setExpanded ( const QModelIndex & index, bool expanded ) после установки модели.


Название: Re: QTreeView, запомнить состояние
Отправлено: UVV от Ноябрь 03, 2009, 10:56
Код:
bool QTreeView::isExpanded 
В принципе я так и собирался. Т.е. получается, что нужно пройтись по всем элементам, у который есть дети, так?


Название: Re: QTreeView, запомнить состояние
Отправлено: spectre71 от Ноябрь 03, 2009, 11:05
Код:
bool QTreeView::isExpanded 
В принципе я так и собирался. Т.е. получается, что нужно пройтись по всем элементам, у который есть дети, так?

Получается что так.
Либо попросить троллей сделать соответствующую фичу. ;)