crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QtreeView и корневой элемент
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Rocky Дата 14.12.2010, 12:57
  А почему нельзя создать как бы список корневых элементов, а заголовки колонок возвращать через headerData? Правда если его убрать, то неясно как будет выглядеть ф-ии index/parent...
Kagami Дата 7.4.2009, 10:58
  Да
Litkevich Yuriy Дата 7.4.2009, 10:58
 
Цитата(Sokoloff @ 7.4.2009, 14:52) *
При создании модели всегда необходимо создать "лишний" элемент, который не будет отображен в TreeView. Да
к нему-то и буду цеплятся все остальные
Sokoloff Дата 7.4.2009, 10:52
  Бр-бр-бр, вы меня запутали:)
Цитата(Kagami @ 6.4.2009, 18:44) *
Да. Для удобства его можно использовать в качестве заголовка
Я понял как "Да - всегда нужно создовать один невидимый над-корневой элемент."

Цитата(Litkevich Yuriy @ 6.4.2009, 19:39) *
Sokoloff, тут просто такая организация модели, как уже заметил Kagami - для удобства. Корневой элемент используется для заголовков. И это необязательно.
Мне понимается как "В данном случае у них такая организация, и они создали над-корневой элемент, но это не обязательно, и ты можешь его не создавать". Т.е. это противоречит Kagami.


Цитата(Kagami @ 6.4.2009, 20:55) *
Если ты хочешь что бы у тебя бы виден один элемент у которого несколько потомков, подчини его корневому.
Опять же, "Да всегда надо создовать над-корневой элемент."


Цитата(Litkevich Yuriy @ 6.4.2009, 21:02) *
Kagami, да, это правильное замечание.
Опа! Теперь Yuriy соглашается с Kagami.


Таким образом, чтоб заморить червя сомненья переспрошу еще раз.
Верно ли данное утверждение?
При создании модели всегда необходимо создать "лишний" элемент, который не будет отображен в TreeView. Да или нет?
Litkevich Yuriy Дата 6.4.2009, 20:02
  Kagami, да, это правильное замечание.
Оно полностью соответствует картинке тут Классы моделей
Kagami Дата 6.4.2009, 19:55
  Наверно цитату невнимательно читали. Поэтому я ее переведу:
Цитата
Конструктор должен создать корневой элемент модели. Для удобства этот элемент содержит только данные вертикального заголовка. Мы так же используем его для ссылки на внутренюю структуру данных содержащую данные модель и он используется для представления воображаемого родителя элементов верхнего уровня в модели


Если ты хочешь что бы у тебя бы виден один элемент у которого несколько потомков, подчини его корневому.
Litkevich Yuriy Дата 6.4.2009, 19:47
 
Цитата(Sokoloff @ 6.4.2009, 23:31) *
Тогда я не пойму, что надо поменяьть чтоб корневой элемент начал отображаться.
чтобы ты что-то видел в представлении, очевидно, что это "что-то" должно быть получено представлением.

В дереве за это отвечают несколько функций:
data()
Цитата
Если наша модель иерархическая, мы также должны реализовать функции index() и parent().
тык

подробности смотри в Создание собственных моделей

Sokoloff, могу тебе порекомендовать такую штуку (когда я делал первую свою табличную модель я ею воспользовался)

Воткни в каждую функцию модели (из примера) подобную строчку:
qDebug() << "Model::function_name";
где: function_name - имя конкретной функции.
и "вошкай" дерево, в консоли увидешь очень много интересного!

затем доработай по своему усмотрению.

Например будет интересно видеть как представление запрашивает данные (строку, столбец и родителя)
Sokoloff Дата 6.4.2009, 19:31
 
Цитата(Litkevich Yuriy @ 6.4.2009, 19:39) *
Sokoloff, тут просто такая организация модели, как уже заметил Kagami - для удобства. Корневой элемент используется для заголовков. И это необязательно.


Тогда я не пойму, что надо поменяьть чтоб корневой элемент начал отображаться.
Litkevich Yuriy Дата 6.4.2009, 18:39
  Sokoloff, тут просто такая организация модели, как уже заметил Kagami - для удобства. Корневой элемент используется для заголовков. И это необязательно.
Sokoloff Дата 6.4.2009, 18:13
 
Цитата(Litkevich Yuriy @ 6.4.2009, 18:39) *
Цитата(Sokoloff @ 6.4.2009, 21:33) *
В конструкторе TreeModel::TreeModel создается корневой элемент, который не отображается в TreeView.
а про какой элемент речь, я что-то не понял. Приведи соответсвующий фрагмент кода


rootItem из
TreeModel::TreeModel(const QString &data, QObject *parent)
     : QAbstractItemModel(parent)
{
     QList<QVariant> rootData;
     rootData << "Title" << "Summary";
     rootItem = new TreeItem(rootData);
     setupModelData(data.split(QString("\n")), rootItem);
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 2:07