Russian Qt Forum

Qt => Model-View (MV) => Тема начата: izoomer от Ноябрь 16, 2006, 13:42



Название: иерархическая QAbstarctItemModel
Отправлено: izoomer от Ноябрь 16, 2006, 13:42
Qt-4.2

Можно ли создать иерархическую модель, например каталог - оглавление каталога, но связать с двумя представдениями, т.е. каталоги в одной QListView а оглавление выбранного каталога в другом QListView. Т.е. корневые узлы в одном виджете а дочерние выбранного в данный момент в другом и динамически менять? Покажите куда копать
спасибо


Название: иерархическая QAbstarctItemModel
Отправлено: bigirbis от Ноябрь 16, 2006, 18:36
Если по простому:
void QAbstractItemView::setRootIndex ( const QModelIndex & index )  [virtual slot]
Если есть основания или хочется экзотики:
создай детеныша от QAbstractProxyModel


Название: иерархическая QAbstarctItemModel
Отправлено: izoomer от Ноябрь 16, 2006, 18:50
и что делать с этим setRootItem ?
если ен трудно - намекните примером


Название: иерархическая QAbstarctItemModel
Отправлено: bigirbis от Ноябрь 16, 2006, 19:16
Что-то типа (откомпилить не пробовал) :) :
Код:
SomeWidget::SomeWidget()
{
 treeView_ = new QTreeView( this );
 treeView_->setModel( someModel_ );
 treeView_->setRootIndex( ModelIndex() );
}

void SomeWidget::itemClicked( const QModelIndex & index )
{
 treeView_->setRootIndex( index );
}


Название: иерархическая QAbstarctItemModel
Отправлено: izoomer от Ноябрь 17, 2006, 10:31
ну это приблизительно по реакции на выбор корневого итема.
А вот как сделать что бы корневые были в одной таблице а дочерние в другой и все от одной модели?


Название: иерархическая QAbstarctItemModel
Отправлено: bigirbis от Ноябрь 17, 2006, 14:41
Судя по документации, для первого вьюера надо вызвать:
void setItemsExpandable ( bool enable )
void setRootIsDecorated ( bool show )

А вообще, посмотри прокси-модели. Думаю, в будущем пригодится...