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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Model-View  (Прочитано 8109 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #15 : Март 24, 2014, 16:39 »

Это я тебе должен объяснять, как работает твой код?
Ты мне лучше объясни, почему в одном случае используешь QModelIndex parentIndex = index.parent(), а в другом нет, хотя функции beginInsertRows и beginRemoveRows имеют одинаковую сигнатуру и одинаково требуют parent в качестве первого параметра.

Да, действительно помогло. Спасибо!
В void TreeModelBrowser::updateModelInsertRow(QModelIndex index)
Я передаю индекс текущего элемента модели, в который я хочу добавить элемент и я думал, что он является парентом.
« Последнее редактирование: Март 24, 2014, 16:48 от demaker » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #16 : Март 24, 2014, 16:48 »

Я передаю индекс текущего элемента модели, в который я хочу добавить элемент и я думал, что он является парентом.
Какая то у вас здесь не стыковка. Улыбающийся
Если вы хотите добавить child к текущему элементу, то индекс этого элемента нужно передавать в качестве parent.

A
B
    B1
        // Добавляем B11 - parent это B1, row = 0
    B2
    B3
C

Если вы хотите добавить элемент после текущего к его родителю, то передавать нужно parent родителя этого элемента.

A
B
    B1
    B2
    // Добавляем элемент B3 - parent это элемент B, row = 2
C
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #17 : Март 24, 2014, 17:00 »

Я передаю индекс текущего элемента модели, в который я хочу добавить элемент и я думал, что он является парентом.
Какая то у вас здесь не стыковка. Улыбающийся
Если вы хотите добавить child к текущему элементу, то индекс этого элемента нужно передавать в качестве parent.

A
B
    B1
        // Добавляем B11 - parent это B1, row = 0
    B2
    B3
C

Если вы хотите добавить элемент после текущего к его родителю, то передавать нужно parent родителя этого элемента.

A
B
    B1
    B2
    // Добавляем элемент B3 - parent это элемент B, row = 2
C


А у меня как?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #18 : Март 24, 2014, 17:02 »

А у меня как?

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

Вот я и не пойму.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #19 : Март 24, 2014, 17:09 »

Я передаю индекс текущего элемента модели, в который я хочу добавить элемент
Значит он и парент, разве нет?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #20 : Март 24, 2014, 17:12 »

Я передаю индекс текущего элемента модели, в который я хочу добавить элемент
Значит он и парент, разве нет?
Да, но тогда значение row вычисляется неправильно.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #21 : Март 25, 2014, 09:48 »

Я передаю индекс текущего элемента модели, в который я хочу добавить элемент
Значит он и парент, разве нет?
Да, но тогда значение row вычисляется неправильно.


Код
C++ (Qt)
void TreeModelBrowser::updateModelInsertRow(QModelIndex index)
{
   if(index.isValid())
   {
       CommonElement *ce = reinterpret_cast<CommonElement*>(index.internalPointer());
       int row = ce->children().length();
       beginInsertRows(index,row,row);
       ce->appendChild();
       endInsertRows();
   }
}
 

Так надо???
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #22 : Март 25, 2014, 10:20 »

Да. Так новый элемент добавиться в конец ветки.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #23 : Март 25, 2014, 10:21 »

Да. Так новый элемент добавиться в конец ветки.

Нет к сожалению.
Так же через раз
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #24 : Март 25, 2014, 16:33 »

Нет к сожалению.
Так же через раз
Скажите, а в консоль какие нибудь предупреждения сыпятся?

Попробуйте на простой модели это отработать. Если не получиться, выкладывайте демонстрашку сюда, будем пробовать вместе. Улыбающийся
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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