QtreeView и корневой элемент |
Здравствуйте, гость ( Вход | Регистрация )
QtreeView и корневой элемент |
Sokoloff |
6.4.2009, 17:33
Сообщение
#1
|
Участник Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11 |
Разбираюсь сейчас с QAbstractModel и QTreeView.
Смотрю пример "Simple Tree Model Example" http://www.doc.crossplatform.ru/qt/4.5.0/i...emodel-cpp.html. В конструкторе TreeModel::TreeModel создается корневой элемент, который не отображается в TreeView. И что-то я не пойму это всегда так, надо создавать один скрытый корневой элемент, даже если мне нужно "дерево" а не "куст"? |
|
|
Litkevich Yuriy |
6.4.2009, 17:39
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Kagami |
6.4.2009, 17:44
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: 9 |
Да. Для удобства его можно использовать в качестве заголовка
Небольшая цитата: Цитата It is up to the constructor to create a root item for the model. This item only contains vertical header data for convenience. We also use it to reference the internal data structure that contains the model data, and it is used to represent an imaginary parent of top-level items in the model.
Сообщение отредактировал Kagami - 6.4.2009, 18:00 |
|
|
Sokoloff |
6.4.2009, 18:13
Сообщение
#4
|
Участник Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11 |
В конструкторе TreeModel::TreeModel создается корневой элемент, который не отображается в TreeView. а про какой элемент речь, я что-то не понял. Приведи соответсвующий фрагмент кодаrootItem из
|
|
|
Litkevich Yuriy |
6.4.2009, 18:39
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Sokoloff, тут просто такая организация модели, как уже заметил Kagami - для удобства. Корневой элемент используется для заголовков. И это необязательно.
|
|
|
Sokoloff |
6.4.2009, 19:31
Сообщение
#6
|
Участник Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11 |
|
|
|
Litkevich Yuriy |
6.4.2009, 19:47
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Тогда я не пойму, что надо поменяьть чтоб корневой элемент начал отображаться. чтобы ты что-то видел в представлении, очевидно, что это "что-то" должно быть получено представлением.В дереве за это отвечают несколько функций: data() Цитата Если наша модель иерархическая, мы также должны реализовать функции index() и parent(). тыкподробности смотри в Создание собственных моделей Sokoloff, могу тебе порекомендовать такую штуку (когда я делал первую свою табличную модель я ею воспользовался) Воткни в каждую функцию модели (из примера) подобную строчку: где: function_name - имя конкретной функции.и "вошкай" дерево, в консоли увидешь очень много интересного! затем доработай по своему усмотрению. Например будет интересно видеть как представление запрашивает данные (строку, столбец и родителя) |
|
|
Kagami |
6.4.2009, 19:55
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: 9 |
Наверно цитату невнимательно читали. Поэтому я ее переведу:
Цитата Конструктор должен создать корневой элемент модели. Для удобства этот элемент содержит только данные вертикального заголовка. Мы так же используем его для ссылки на внутренюю структуру данных содержащую данные модель и он используется для представления воображаемого родителя элементов верхнего уровня в модели Если ты хочешь что бы у тебя бы виден один элемент у которого несколько потомков, подчини его корневому. |
|
|
Litkevich Yuriy |
6.4.2009, 20:02
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Kagami, да, это правильное замечание.
Оно полностью соответствует картинке тут Классы моделей |
|
|
Sokoloff |
7.4.2009, 10:52
Сообщение
#10
|
Участник Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11 |
Бр-бр-бр, вы меня запутали
Да. Для удобства его можно использовать в качестве заголовка Я понял как "Да - всегда нужно создовать один невидимый над-корневой элемент."Sokoloff, тут просто такая организация модели, как уже заметил Kagami - для удобства. Корневой элемент используется для заголовков. И это необязательно. Мне понимается как "В данном случае у них такая организация, и они создали над-корневой элемент, но это не обязательно, и ты можешь его не создавать". Т.е. это противоречит Kagami.Если ты хочешь что бы у тебя бы виден один элемент у которого несколько потомков, подчини его корневому. Опять же, "Да всегда надо создовать над-корневой элемент."Kagami, да, это правильное замечание. Опа! Теперь Yuriy соглашается с Kagami.Таким образом, чтоб заморить червя сомненья переспрошу еще раз. Верно ли данное утверждение? При создании модели всегда необходимо создать "лишний" элемент, который не будет отображен в TreeView. Да или нет? |
|
|
Текстовая версия | Сейчас: 28.12.2024, 9:34 |