Тормозит иерархическая модель построенная на QAbstractItemModel (библиотека QT) |
Здравствуйте, гость ( Вход | Регистрация )
Тормозит иерархическая модель построенная на QAbstractItemModel (библиотека QT) |
Delphist |
20.8.2008, 9:36
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 41 Регистрация: 4.8.2008 Из: Россия Пользователь №: 249 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть иерархическая модель наследуемая от QAbstractItemModel (это библиотека QT), построение модели происходит на основе моего иерархического класса типа:
Этот класс передается по указателю в модель, соответственно когда происходят изменения в CMyClass генерятся сигналы. На все эти сигналы ставяться один и тот же слот модели, который всего лишь делает reset. В моем классе в каком-то из узлов делаются переодические обновления (меняется nCode и sName) приблизительно 60 обновлений в сек, в итоге капитально тормозит я так понимаю TreeView из-за отрисовки, потому как reset заставляет полностью перестраиваться дерево а надо лишь всего, те узлы которые изменились. Подскажите пожалуйста, из-за чего происходит торможение и как от него збавиться? Сообщение отредактировал Delphist - 20.8.2008, 9:44 |
|
|
Tonal |
26.8.2008, 10:09
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Что значит "код не работает должным образом"? Что происходит то?
Раз у тебя есть markDeleted, то естественно отображать такие узлы не нужно и флаг должен учитываться. Ну и кроме того, может ввести сигнал nodeAfterDestroyed - тогда модель удаления будет точно соответствовать Qt-ёвой. |
|
|
Delphist |
26.8.2008, 11:50
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 41 Регистрация: 4.8.2008 Из: Россия Пользователь №: 249 Спасибо сказали: 0 раз(а) Репутация: 0 |
Что значит "код не работает должным образом"? Что происходит то? Раз у тебя есть markDeleted, то естественно отображать такие узлы не нужно и флаг должен учитываться. Ну и кроме того, может ввести сигнал nodeAfterDestroyed - тогда модель удаления будет точно соответствовать Qt-ёвой. происходит следующее, если есть вот такое дерево: root |___child1 |___child2 |___child3 |___child4 |___child5 |``````| |``````|__child51 |``````| |``````|__child52 так вот если скажем child4 помечен на удаление т.е markDeleted == true, то в дереве перестает отображаться не только child4, но и child5 c его детьми. По поводу того, что необходимо учитывать markDeleted, возникает вопрос как его учитывать и в каких виртуальных ф-циях QAbstractItem |
|
|
Текстовая версия | Сейчас: 22.12.2024, 21:42 |