Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Октябрь 01, 2019, 12:08



Название: Тормоза QTreeWodget [решено]
Отправлено: Igors от Октябрь 01, 2019, 12:08
Добрый день

Есть колонка с checkbox. Если юзер "ставит галку" с нажатым Alt, то она ставится для всех айтемов (этот ф-ционал я добавил). И вот всего-то на 2K айтемов "задумывется" на минуту (если не больше). Начал разрывать исходники. Похоже Qt вызывает dataChanged для каждого изменения (setData). А dataChanged бросается считать макс ширину (а там по фонтам). Может как-то можно по-быстрому проскочить? (чисто шкурный интерес  :))

Спасибо


Название: Re: Тормоза QTreeWodget
Отправлено: kuzulis от Октябрь 01, 2019, 12:24
1. Написать свою модель в которой не делать dataChanged для всех?  
2. Написать свой чек-бокс?
3. Не использовать QTreeWidget?


Название: Re: Тормоза QTreeWodget
Отправлено: Igors от Октябрь 02, 2019, 10:58
1. Написать свою модель в которой не делать dataChanged для всех?  
2. Написать свой чек-бокс?
3. Не использовать QTreeWidget?
Чекбокс и так "свой", но это ничего не дает. Докопался, надо так
Код
C++ (Qt)
this->scheduleDelayedItemsLayout();
// ставим все чекбоксы
this->viewport()->update();
 
Но жалко времени на рытье :'(