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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Часть дерева  (Прочитано 2768 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Май 29, 2018, 08:33 »

Добрый день

Есть такое дерево

Цитировать
Объект 1     
     Трансформации
           Позиция           
                X               
                Y               
                Z               

           Угол X             
           Угол Y             
           Угол Z             
...
     Материал
        Индекс преломления
        Цвет
              R
              G
              B
.....

Объект 2             
....
Отобразить все дерево (целиком) - без проблем.  Но вот в одном окне нужно показать не все, а только те айтемы что юзер указал, это могут быть только листья дерева. Напр он может отобрать
Цитировать
Объект 1 -> Позиция -> X
Объект 1 -> Угол Y
Объект 1 -> Индекс преломления
и.т.д
Но напр выбор "Объект 1 ->  Материал" недопустим, это не лист.

Вопрос: как удачно показать такую "выкопировку из дерева" ? Ну "обгрызаное дерево"  (т.е. тупо копировать всю струкуру и удалить пустые ветки) точно нехорошо. Поэтому, не долго думая, я сделал как таблицу в 2 колонки (хотя все равно юзаю QTreeWidget), т.е. так
Цитировать
Объект 1 | Позиция_X
Объект 1 | Угол Y
Объект 1 | Индекс преломления
Ну тоже не блеск. Имена объектов не уникальны, напр есть 100 "Объект 1" и неясно что к чему. Также приходится извиваться чтобы склеить  "Позиция_X".

И еще - внутри объектов отобранные айтемы должны следовать в том же порядке что и в полном дереве. А вот сами объекты - в порядке их добавления в данное окно.

Спасибо
Записан
zhbr
Гость
« Ответ #1 : Май 29, 2018, 10:51 »

если бы порядок объектов нужен был бы как в основном дереве, то я бы отнаследовался от QSortFilterProxyModel и реализовал бы метод filterAcceptsRow(). в любом случае думаю нужно смотреть в сторону проксимоделей.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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