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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: sortChildren в QStandardItem по собственному алгоритму.  (Прочитано 7394 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #15 : Ноябрь 23, 2017, 14:59 »

Можно попробовать немного повелосипедить.
Есть метод QStandardItem::takeRow, который позволит забрать из модели сортируемые строки и сформировать список этих строк в памяти. Далее этот список отсортировать как требуется и вернуть строки прежнему родителю.
Думаю, должно получиться

Это дичайший говнокод, потому что каждый takeRow вызывает beginRemoveRows/endRemoveRows, что приводит к N изменениям вью (где N - количество рядов). Побочным эффектом является инвалидация всех persistent indexes (визуально, например, пропадёт выделенная строка)
Sort же вызывает layoutAboutToBeChanged/layoutChanged которые меняют persistent indexes (говорят, раньше была выделена 10я строка, а теперь 90я) + вызывают ОДНО обновление вью.

Т.е. вместо алгоритма со сложностью O(1) предлагается сложность O(N).
Но работать будет:)
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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