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

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

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

Сообщений: 11445


Просмотр профиля
« : Июль 17, 2015, 11:58 »

Добрый день

Есть дерево объектов, имена объектов НЕ уникальны. Из этого дерева юзер может делать произвольные выборки, т.е. создавать/редактировать контейнер(ы) указателей на объекты. Помещение объекта в выборку и удаление из нее никак не меняет сам объект ни иерархию. Помещение объекта-родителя в выборку НЕ помещает туда автоматически всех его потомков по дереву, т.е. в самой выборке никакой иерархии нет, она там и не нужна.

Выборка(и) отображается в отдельном окне в виде листбокса. Претензия пользователя типа: "в окне я совершенно не вижу что это за объект. Да, я могу  его выбрать, и это будет показано в окне иерархии - но когда у меня 100 объектов "Cube" я ж не могу каждый так щупать".

Но у меня совсем нет идей как это разрулить. Простой пример: в выборку добавлен всего 1 объект, но он на 5-м уровне иерархии. И что/как я должен рисовать?

Спасибо
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #1 : Июль 17, 2015, 13:44 »

имена объектов НЕ уникальны.

Для начала исправить это.

Также при наведении мышки на объект в списке можно подсвечивать объект в иерархии.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #2 : Июль 17, 2015, 13:49 »

Еще добавить возможность добавлять в выборку из иерархии. Правый клик -> "добавить в выборку"
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Июль 17, 2015, 14:08 »

значит не стоит выводить эти выборки в листбокс, а в тривью.
еще как вариант на списком объектов (я так понимаю которые принадлежат одному узлу) можете нарисовать
контрол, который если не ошибаюсь в файндере рисует путь из ктаалогов в виде толстых стрелок, где в каждой такой стрелке
пишете название узла, который ведет к этой группе. Просто и наглядно.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Июль 17, 2015, 15:07 »

Для начала исправить это.
Неуникальность имен диктуется др соображениями, это не то что надо исправлять

Также при наведении мышки на объект в списке можно подсвечивать объект в иерархии.
Не видно заметных выгод по сравнению с имеющимся "выбрать", да и объект может быть в collapsed ветке. Вообще hover в данном случае "чревато" т.к. вызываются OpenGL перерисовки что могут быть очень массивными

Еще добавить возможность добавлять в выборку из иерархии. Правый клик -> "добавить в выборку"
Имеется, как и "удалить из выборки"

значит не стоит выводить эти выборки в листбокс, а в тривью.
А у меня листбокс и так QTreeWidget, может иметь раскладушки. Но как рисовать "некомплектное" дерево?

еще как вариант на списком объектов (я так понимаю которые принадлежат одному узлу) можете нарисовать
контрол, который если не ошибаюсь в файндере рисует путь из ктаалогов в виде толстых стрелок, где в каждой такой стрелке пишете название узла, который ведет к этой группе. Просто и наглядно.
А где это в Finder'е?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #5 : Июль 17, 2015, 20:54 »

А, я думал у вас типа граф на сцене, а там тупо тривьюшка.
Как вариант, строить тоже самое дерево, но в котором нет невыбранных элементов.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #6 : Июль 20, 2015, 14:17 »

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


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