После удаления и повторного создания модели. У меня одно 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 ) после установки модели.