Название: Model и две View Отправлено: Kolobok от Июнь 10, 2008, 22:32 Здравствуйте,
у меня в программе есть QTreeView и QListView для отображения файловой системы. Код: QDirModel *model = new QDirModel; При клике на папке в tree, ее содержимое появляется в list. Проблема в том, что мне в tree нужны только папки. Но если я к модели прикручиваю фильтр, то это действует на обе вьюшки. Если беру две модели, то при клике возбуждается исключение. Во вьюшках фильтры я не нашел. Можно ли это как-то просто сделать? Название: Re: Model и две View Отправлено: lit-uriy от Июнь 10, 2008, 22:50 попробуй дерево через промежуточную модель (Proxy модель (http://crossplatform.ru/documentation/qtdoc4.3/model-view-proxy-models.php)) к основной подключать, а в промежуточной модели задать фильтр
Название: Re: Model и две View Отправлено: Kolobok от Июнь 11, 2008, 06:54 попробуй дерево через промежуточную модель (Proxy модель (http://crossplatform.ru/documentation/qtdoc4.3/model-view-proxy-models.php)) к основной подключать, а в промежуточной модели задать фильтр Это я тоже пробовал. При клике по папке в дереве возбуждается исключение и ругается, что модель должна быть одна и та же. Название: Re: Model и две View Отправлено: lit-uriy от Июнь 11, 2008, 08:43 значит что-то ты не так пробывал, выясняй что именно. На то она и прокси-модель, иначеб ее троли не делали.
Название: Re: Model и две View Отправлено: Kolobok от Июнь 11, 2008, 09:41 Я вот так делал
Код: QDirModel *model = new QDirModel; значит что-то ты не так пробывал, выясняй что именно. Так я вроде этот топик для того и открыл, чтобы выяснить. Название: Re: Model и две View Отправлено: lit-uriy от Июнь 11, 2008, 10:22 ui.listView->setModel(proxyModel);
ui.treeView->setModel(model); если тебе надо фильтр в дереве, к нему прокси и цепляй а не к списку. И в проксе настрой фильтр. А Список пусть с основной модели кормится. Название: Re: Model и две View Отправлено: Kolobok от Июнь 11, 2008, 10:42 Это без разницы, что куда цеплять. Вьюшки хотят с одного зкземпляра модели кормиться.
Название: Re: Model и две View Отправлено: Alex03 от Июнь 11, 2008, 11:40 Я вот так делал ДУмаю что тут индекс из одной модели в другую передаётся, пользуйтеКод: ... QModelIndex QSortFilterProxyModel::mapFromSource ( const QModelIndex & sourceIndex ) QModelIndex QSortFilterProxyModel::mapToSource ( const QModelIndex & proxyIndex ) Название: Re: Model и две View Отправлено: Kolobok от Июнь 11, 2008, 14:59 ДУмаю что тут индекс из одной модели в другую передаётся, пользуйте QModelIndex QSortFilterProxyModel::mapFromSource ( const QModelIndex & sourceIndex ) QModelIndex QSortFilterProxyModel::mapToSource ( const QModelIndex & proxyIndex ) Спасибо, это помогло. Но в QSortFilterProxyModel я не знаю, как прикрутить фильтр QDir::AllDirs | QDir::NoDotAndDotDot. Название: Re: Model и две View Отправлено: Kolobok от Июнь 12, 2008, 14:45 Ничего не придумал с QSortFilterProxyModel, сделал с двумя моделями.
Код: treeModel = new QDirModel; |