crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Crash при эмитте layoutChanged у QAbstractItemModel, Qt 4.5.0
Vass
  опции профиля:
сообщение 21.4.2009, 14:02
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 17.3.2009
Из: Россия, Рыбинск
Пользователь №: 617

Спасибо сказали: 8 раз(а)




Репутация:   0  


Моя модель наследуется от QAbstractItemModel и приделана к QTreeView через QSortFilterProxyModel.
После дропа item'a на дерево делаю emit layoutChange() у модели, в асситенте написано, что это, можно сказать единственный адекватный способ перерисовать дерево.
Однако, после этого вызова приложение валиться. бактрейс говорит что ошибка где-то в недрах Qt4Core в QProxyModel.
Самое интересное, что валится все только в том случае, когда дропаешь на нулевую колонку (колонку с деревом).

Кто-то может встречался с такой проблемой, я новичок в Qt, может что-то не так делаю, но уже замучался третий день биться с этой проблемой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 21.4.2009, 14:29
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Попробуй сделать такую полседовательность, и именно в таком порядке.
emit layoutAboutToBeChanged();
emit layoutChanged();

Должно помоч. По крайней мере в асистенте сказано, что для подклассов QAbstractItemModel, прежде чем выслать layoutChanged, необходимо выслать layoutAboutToBeChanged

Сообщение отредактировал igor_bogomolov - 21.4.2009, 14:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Vass
  опции профиля:
сообщение 21.4.2009, 16:35
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 17.3.2009
Из: Россия, Рыбинск
Пользователь №: 617

Спасибо сказали: 8 раз(а)




Репутация:   0  


Цитата(igor_bogomolov @ 21.4.2009, 15:29) *
Попробуй сделать такую полседовательность, и именно в таком порядке.
emit layoutAboutToBeChanged();
emit layoutChanged();

Должно помоч. По крайней мере в асистенте сказано, что для подклассов QAbstractItemModel, прежде чем выслать layoutChanged, необходимо выслать layoutAboutToBeChanged

Пробовал, непомогло :(

Цитата(igor_bogomolov @ 21.4.2009, 15:29) *
Попробуй сделать такую полседовательность, и именно в таком порядке.
emit layoutAboutToBeChanged();
emit layoutChanged();

Должно помоч. По крайней мере в асистенте сказано, что для подклассов QAbstractItemModel, прежде чем выслать layoutChanged, необходимо выслать layoutAboutToBeChanged



хм... похоже помогло... сейчас потестирую...
Но как то странно делал вызов layoutAboutToBeChanged(); в модели потом вносил изменения и делал layoutChanged(); не помогало, а подряд вроде работает.

Нет.. все-таки не помогло, стало так: когда дроп из себя в себя иногда не валиться, когда дроп извне валиться всегда.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 20:38