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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Не отображаются итемы в кастомной моделе.  (Прочитано 10692 раз)
Bepec
Гость
« Ответ #15 : Февраль 16, 2012, 14:57 »

Не, непонятные мне моменты - это С++11. А умышленные отступы - это стиль программирования.
Записан
magog
Гость
« Ответ #16 : Февраль 16, 2012, 14:59 »

Думаю человек просто не разобрался с Model-View и рубит с плеча.

Правда используется незнакомый мне С++11 и стиль программирования ммм...

Стиль программирования такого типа недавно обсуждался на хабре, но мной был забракован за нечитабельностью и сложностью для понимания Подмигивающий

1. Тоесть в чем причина Вы не знаете, поэтому пусть во всем виноват я. Ок.
2. С каких пор программисту стал важен стиль, что бы разобраться в коде? И да - не вижу ни одного места, страшного, если так можно сказать.
3. Аргументы будут да и вообще? Не можете оказать помощь из-за стиля - проходите мимо
Записан
Bepec
Гость
« Ответ #17 : Февраль 16, 2012, 15:00 »

Агриться не стоит. Я только с anrew.k собачусь Веселый

Простой вопрос - вы писали ранее уже свою модель? простейшую?
Записан
magog
Гость
« Ответ #18 : Февраль 16, 2012, 15:01 »

Это моя первая модель для дерева. Обычные таблицы писал и все ок работает.
Записан
sudo
Гость
« Ответ #19 : Февраль 16, 2012, 15:17 »

В общем, не осилил, переписав чуть ли не половину кода Веселый Будет время, может поковыряю
Записан
magog
Гость
« Ответ #20 : Февраль 16, 2012, 15:18 »

Да что там переписывать пришлось? там 1 лямбда и 2 инит списка. Вот и все
Записан
Bepec
Гость
« Ответ #21 : Февраль 16, 2012, 15:24 »

В принципе всё понятно. (частично, могу и ошибаться)

У тебя просто никогда не возвращается верный индекс...

Даже если посмотреть - у тебя нет элементарных проверок на наличие чилдренов, ты просто берёшь 0 элемент из 0 массива и пытаешься вернуть на него индекс Оо...
Соответственно, ничего и не появляется.

Мой тебе совет - не мчись сразу в "я хочу полный функционал".

А сделай проще - сначала модель с заглушками и только Top Item'aми, потом уже добавляй функционал.

update: да переписать я переписал, не проблема.

У тебя все данные пытаются взяться с твоего "Item'a", который на тот момент пустой :/
« Последнее редактирование: Февраль 16, 2012, 15:26 от Bepec » Записан
magog
Гость
« Ответ #22 : Февраль 16, 2012, 15:29 »

Куда уже примитивнее? Добавляется итем. Добавляется только в верхний уровень. И пример практически буква в букву - examples. Но почему-то не показывает ничего
Записан
Bepec
Гость
« Ответ #23 : Февраль 16, 2012, 15:33 »

Код:
QModelIndex TreeModel::index (int row, int column, const QModelIndex& parent) const
{
if (!hasIndex (row, column,parent))
return QModelIndex();

// никкогда не доходит до сюда. почему? хз. разбираться особо неохота.
TreeItem *parentItem = GetItem (parent);
        parentItem->AddChild(RootItem_);

// Если 1 условие убрать, то ты берёшь вот здесь указатель на 0 элемент из массива в 0 элементов (проще говоря куда то указателем тыркаешь, непонятно куда)
TreeItem *childItem = parentItem->Child (row);
// и самое интересное, указатель то у тебя существует, и поэтому ты делаешь какой то бред...
if (childItem)
return createIndex (row, column, childItem);
else
return QModelIndex ();
}

Помоему проще новую модель написать с 0, чем выяснять что тут у тебя творится...
Записан
magog
Гость
« Ответ #24 : Февраль 16, 2012, 15:44 »

Сейчас это и пытаюсь сделать.
Записан
Bepec
Гость
« Ответ #25 : Февраль 16, 2012, 15:45 »

(2 поста подряд плохо, зато внимание привлекает. Прошу не бить ^,^ )

У тебя сейчас попытка построить древовидную модель с 1 топИтемом + 5 итемов 2 уровня.
Причём есть функционал:
+  добавления,
+ удаления,
+ вставки строк .
+ название столбцов, количество столбцов/строк берётся именно из топИтема (для всей модели), что категорически рубит всю модель
+ индекс у тебя вычисляется непонятным образом
+ каждый раз при вызовах ТопИтема, ты зачем то создаёшь на него указатель
+ в функции возврата индекса ты берёшь 0 элемент из 0 массива
+ из этого несуществующего указателя на элемент ты берёшь ещё аж целых 3 параметра

В результате твоя программа, при правильной работе % на 250 упала бы, и дай боже, если б не потянула за собой IDE Подмигивающий

Тут надо переписывать почти всё. Проще заного сделать простую модель с 1 айтемом.

update: могу завтра попробовать накидать тебе тестовую древовидную модель, но только если ты изъявишь желание Подмигивающий
Записан
magog
Гость
« Ответ #26 : Февраль 16, 2012, 15:47 »

Не надо. Я сам себе могу накидать. Спасибо.
Записан
Bepec
Гость
« Ответ #27 : Февраль 16, 2012, 15:50 »

Пожалуйста, приходи ещё Подмигивающий
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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