Название: Как переиндексировать модель-вид? Отправлено: Caduceus от Июль 03, 2012, 12:07 Удаляю один элемент дерева через beginRemoveRows-removeRows-endRemoveRows - все нормаьно удаляется
Удаляю второй (который шел после первого) - падает на невалидном родителе, индексы слетели. как после удаления переиндексировать? Название: Re: Как переиндексировать модель-вид? Отправлено: panAlexey от Июль 03, 2012, 17:09 есть такое, как подсказка может сойдет:
Код: bool uoMetaModel::deleteNode(uoMetaNode *pNode, const QModelIndex &index) Название: Re: Как переиндексировать модель-вид? Отправлено: sasha12345 от Июль 06, 2012, 16:12 Как раз тоже столкнулся с этой проблеммой, только у меня не дерево, а таблица в которой хочу удалить выделенные строки. Пока я сделал так:
1) Получаю выделенные индексы. 2) Из них выделяю номера строк 3) Сортирую полученные номера строк от большего к меньшему 4) Удаляю строки в модели с номерами из отсортированого списка. Если кратко, то идея в том, чтобы удалять строки от большего к меньшему Вообще, я не особо давно занимаюсь Qt, и чем глубже копаю, тем больше начинают выявляться недоработки. вот и сейчас, например появились такие вопросы: 1) Почему QItemSelectionModel возвращает СПИСКИ индексов, а в QAbstractItemModel НЕТ ф-ии удаления списка индексов? 2) Почему при удалении строки в QAbstractItemModel не происходит автоматического сдвига выделения в QItemSelectionModel? Название: Re: Как переиндексировать модель-вид? Отправлено: Igors от Июль 06, 2012, 18:37 Вообще, я не особо давно занимаюсь Qt, и чем глубже копаю, тем больше начинают выявляться недоработки. Какой Вы талантливый! Недавно занимаетесь а уже нашли недоработки! :)Есть контейнер данных и второй контейнер индексов по которым нужно удалить данные. Ну и удаляем Код Если не model-view, а просто контейнер данных, то можно написать лучше Название: Re: Как переиндексировать модель-вид? Отправлено: sasha12345 от Июль 10, 2012, 17:49 Вообще, я не особо давно занимаюсь Qt, и чем глубже копаю, тем больше начинают выявляться недоработки. Какой Вы талантливый! Недавно занимаетесь а уже нашли недоработки! :)Есть контейнер данных и второй контейнер индексов по которым нужно удалить данные. Ну и удаляем Код Если не model-view, а просто контейнер данных, то можно написать лучше 1) Приходится вначале сортировать. почему бы в модели-селекторе не хранить уже в отсортированном виде. 2) Приходится удалять по одному элементу. А вдруг модель организована как линейный массив и каждое удаление - это копирование кучи элементов, а если элементов там уже очень много. Название: Re: Как переиндексировать модель-вид? Отправлено: Igors от Июль 10, 2012, 19:04 2) Приходится удалять по одному элементу. А вдруг модель организована как линейный массив и каждое удаление - это копирование кучи элементов, а если элементов там уже очень много. Вот Вы по сути сами и ответили - что и как удалять решает удаляющий, и самостоятельно, нравится ему или нет. А как удалить без многократного копирования - Вы знаете |