Russian Qt Forum

Qt => Общие вопросы => Тема начата: SABROG от Апрель 18, 2007, 18:17



Название: QItemDelegate сохраненный указатель на QStandardItem и краш
Отправлено: SABROG от Апрель 18, 2007, 18:17
Есть QTreeView, с QStandardItemModel и своим делегатом на базе QItemDelegate. При заполнении модели в специальные переменные я запихиваю указатели на каждый из QStandardItemов. Внутри метода setEditorData по типу QModelIndex'a я определяю какой из итемов передомной и беру на него сохраненный QStandardItem указатель, пытаюсь тут же изменить ему высоту ячейки через setSizeHint и получаю краш :(

Причем падает при попытке взять хинт
pointer->sizeHint();

добавлено спустя 1 час 7 минут:

 Вообще странно, указатель валидный. Но видимо есть какое-то ограничение на использование методов связанных с отрисовкой внутри делегируемого класса, т.к. как раз его задача - отрисовка. Я хочу сделать так, чтобы при наведении мышкой на итем его высота увеличивалась, при покидании итема - возвращалась в прежнюю. Пытался проверять флаги в sizeHint и возвращать размер больше, если стоит флаг option.state & QStyle::State_MouseOver, но почему-то не срабатывает. Видимо надо ставить фильтр на mouse move.


Название: QItemDelegate сохраненный указатель на QStandardItem и краш
Отправлено: Racheengel от Апрель 19, 2007, 00:49
а модель больше нигде не меняется?
я делал что-то подобное (сохранял итемы, а затем работал с ними) - проблем вроде не было...