Я пытаюсь использовать beginMoveRows / endMoveRows, чтобы заставить постоянные индексы придерживаться, но иногда расширенные флаги состояния / постоянные индексы дублируются, где они не должны быть.
Там довольно много кода, поэтому я рассмотрю то, что, как мне кажется, я сказал машине сделать:
Есть метод sortChildrenOf (item), который делает всю магию.
Все работает отлично, когда есть 2 уровня, но когда я ввожу «длинное» дерево данных, постоянные индексы повреждаются.
Данные в дереве обновляются из сети, но фактическое обновление выполняется в потоке графического интерфейса.
Есть какой-то точный порядок, в котором я должен делать вещи? Могу ли я забыть наследовать какой-то метод, который вызывает это?
Я получил эти методы реализованы:
— данные
— флаги
— getItem
— индекс
— родитель
— setData
Редактировать:
забыл упомянуть, я получил emit layoutAboutToBeChanged и emit layoutChanged до и после основного вызова sortChildrenOf.
Я получил его на работу, но не с beginMoveRows и endMoveRows. Я использовал старую систему генерации layoutAboutToChange, получая список постоянных индексов, манипулируя этим, и возвращая его обратно с помощью changePersistentIndexList и, наконец, изменяя эмиссию макета.
Так как это было исправлением, я склонен полагать, что есть некоторая ошибка с beginMoveRows, endMoveRows и постоянными индексами с данными типа дерева.
Спросите, нужен ли вам лучший пример кода.
Других решений пока нет …