Название: [Qt 4.3.1] QtTableView и множественное удаление Отправлено: Tonal от Сентябрь 03, 2007, 08:32 При реализации множественного удаления наткнулись на некоторые странности:
1) Событие смены текущего приходит не по окончанию удаления а во время оповещения о начале удаления 2) При оповещении о начале удаления QSortFilterProxyModel выкидывает сразу и событие об окончании изменений. Мы, конечно, блакируем интерфейс во время изменений (setUpdatesEnabled(false)), но вот на событие смены текущего иногда завязано довольно много действий. И очень неудачно, когда текущим становится элемент, которого уже нет... Кто-нибудь натыкался на подобное? Какие идеи как обойти? Собственно псевдо-код отработки удаления в модели (python): Код: def _inner_data_dels(self, oids): Название: Re: [Qt 4.3.1] QtTableView и множественное удаление Отправлено: Пантер от Сентябрь 03, 2007, 11:24 Извини, если слишком глупо помогу, но можно перед удаление запомнить курсор, установить курсор на не удаляемый элемент, вернуть курсор, если не удален.
Название: Re: [Qt 4.3.1] QtTableView и множественное удаление Отправлено: Tonal от Сентябрь 03, 2007, 11:46 Смену фокуса я пока обошел другим методом - собираю удалённые строки в непрерывные пачки и выдаю уведомление именно для пачек.
При этом Qt вроде коректно устанавливает текущий. И всё равно, остались сомнения в правильности поведения Qt в этом случае. По идее, событие смены текущего элемента должно происходить после того, как обновление закончено... То же и с фильтрацией... Название: Re: [Qt 4.3.1] QtTableView и множественное удаление Отправлено: Пантер от Сентябрь 03, 2007, 11:50 По идее, событие смены текущего элемента должно происходить после того, как обновление закончено... Почему? Курсор, на сколько я знаю, элемент не графический, поэтому обновляться должен всегда. Хотя не уверен. |