![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
AD |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Есть ли пример, где можно увидеть, как правильно отмечать узлы и листья дерева. Что-то мой код работает не так, как я хотел бы. Вроде бы такая вещь стандартна и, наверняка, подобные вещи уже делали. Можно ли где-нибудь посмотреть?
Вот мой самописный код, который работает не совсем так, как положено:
Вот рисунок дерева. Есть желание сделать стандартно: т.е. если все листья не отмечены, то и узел не отмечен, если отмечен узел, то какой-то из листьев является отмеченным. Если пользователь отмечает узел, то отмечаются все листья этого узла. Вот рисунок дерева: [attachment=441:tree_widget.JPG] Поможете сделать этот алгоритм? Или подскажите, где его можно найти? Да и еще одно: в дереве возможно только три степени вложенности, как показано на рисунке.... Сообщение отредактировал AD - 24.2.2009, 16:32 |
|
|
AD |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Прошу помочь. Запутался!
![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
похоже у нас к этой теме никто не подходил, спроси на прогорге там народу поболе, может кто-то сталкивался.
|
|
|
AD |
![]()
Сообщение
#4
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
похоже у нас к этой теме никто не подходил, спроси на прогорге там народу поболе, может кто-то сталкивался. Ну может кто-нибудь вдруг что-то вспомнит... Вот более адекватный вариант.
Но все же есть некоторые некорректности: 1) когда я нажимаю на корень, выделяются(снимаются выделения) с узлов, а на листьях - остаются. 2) когда в узле не один лист, а несколько - то при нажатии на лист - выделение затрагивает и узел. Я понимаю, что у меня эти ситуации и не учтены в коде. Но вот хотел бы учесть. Буду благодарен за помощь! |
|
|
AD |
![]()
Сообщение
#5
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Cделать корректный рекурсивный алгоритм не удалось. Спасло то, что максимально-возможная вложенность равна 3. Поэтому сделал таким образом:
Если кто-то сможет помочь сделать из этого корректный алгоритм для любой вложенности - буду благодарен. Ну а так - в принципе - для вложенности не больше 3 - алгоритм работает! ![]() |
|
|
AD |
![]()
Сообщение
#6
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Подсказали алгоритм, который работает с любой вложенностью!
![]()
|
|
|
AD |
![]()
Сообщение
#7
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Вот решение для QTreeView
Tree Model
Сообщение отредактировал AD - 27.2.2009, 11:26 |
|
|
![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 13.5.2025, 11:45 |