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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Скрытие и развёртываение листьев в QTreeView  (Прочитано 3436 раз)
sh123
Гость
« : Января 28, 2009, 16:49 »

Добрый вечер! История такая...  Улыбающийся

Есть кастомная model, кастомный прокси и QTreeView, прокси используется для сортировки и фильтрации элеметов. Идея такая, что когда фильтр активирован, то все листья дерева разворачиваются и в то же время те листья, которые не имеют потомков скрываются. В данный момент, удалось создать автоматическое скрытие листьев с использованием QTreeView::setRowHidden(). Почему бы не использовать фильтр для этого? Проблема в детектировании пустых листьев в процессе фильтрации, необходимо получить количество элеметов в листе дерева и для этого необходимы индексы прокси модели, но так как QSortFilterProxyModel::filterAcceptRow получает индексы исходной модели и при маппинге индексов в прокси модель происходит рекурсия filterAcceptRow. Также удалось автоматически разворвачивать и сворачивать листья дерева с помощью QTreeView::collapse и QTreeView::expand, но вот проблема в том, когда оба метода используются вместе (скрытие\разворачиваение листьев и скрытие\отображение листьев), то QT выдаёт следующее предупреждение и последующие вызовы к QTreeView::collapse и QTreeView::expand не имеют желаемого результата
Warning: QTreeView::rowsInserted internal representation of the model has been corrupted, resetting.

Может у кого-то есть какие-либо идеи как можно проще добиться желаемого более простыми способами или решить данную проблему.
Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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