![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Delphist |
![]() ![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 41 Регистрация: 4.8.2008 Из: Россия Пользователь №: 249 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Есть иерархическая модель наследуемая от QAbstractItemModel (это библиотека QT), построение модели происходит на основе моего иерархического класса типа:
Этот класс передается по указателю в модель, соответственно когда происходят изменения в CMyClass генерятся сигналы. На все эти сигналы ставяться один и тот же слот модели, который всего лишь делает reset. В моем классе в каком-то из узлов делаются переодические обновления (меняется nCode и sName) приблизительно 60 обновлений в сек, в итоге капитально тормозит я так понимаю TreeView из-за отрисовки, потому как reset заставляет полностью перестраиваться дерево а надо лишь всего, те узлы которые изменились. Подскажите пожалуйста, из-за чего происходит торможение и как от него збавиться? Сообщение отредактировал Delphist - 20.8.2008, 9:44 |
|
|
trdm |
![]()
Сообщение
#2
|
Дмитрий Трошин ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: ![]() ![]() ![]() |
Как насчет профайлинга?
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Tonal |
![]()
Сообщение
#4
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Ну так не используй reset.
Модель, при изменении данных, должна генерить сигнал dataChanged. Тогда вьюшка перерисует только изменившийся элементик. ![]() |
|
|
Delphist |
![]()
Сообщение
#5
|
Студент ![]() Группа: Новичок Сообщений: 41 Регистрация: 4.8.2008 Из: Россия Пользователь №: 249 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Tonal |
![]()
Сообщение
#6
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Где MyModel::indByNode вычисляет индекс в модели по экземпляру. Сообщение отредактировал Tonal - 20.8.2008, 13:40 |
|
|
Delphist |
![]() ![]()
Сообщение
#7
|
Студент ![]() Группа: Новичок Сообщений: 41 Регистрация: 4.8.2008 Из: Россия Пользователь №: 249 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Где MyModel::indByNode вычисляет индекс в модели по экземпляру. Спасибо для onNodeChange indByNode выглядит так:
Вроде работает, но в не уверен на 100%. Возникла еще одна проблема, а как тогда должен выглядить indByNode, если генерится событие onNodeDestroy(CMyClass& node, int col) т.е. удаляется элемент, в качестве node здесь передается удаляем элемент. Сообщение отредактировал Delphist - 21.8.2008, 8:45 |
|
|
trdm |
![]()
Сообщение
#8
|
Дмитрий Трошин ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: ![]() ![]() ![]() |
посмотри сорцы QDirModel. мне помогло.
|
|
|
Delphist |
![]()
Сообщение
#9
|
Студент ![]() Группа: Новичок Сообщений: 41 Регистрация: 4.8.2008 Из: Россия Пользователь №: 249 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Tonal |
![]()
Сообщение
#10
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Открой ассистента и посмотри состав сигналов и защищённых функций QAbstractItemModel.
Там очень интуитивные названия и доходчиво написаны пояснения. ![]() |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 7.2.2025, 8:45 |