Название: как правильнее вызывать model->revertAll(); Отправлено: ranet от Март 10, 2009, 17:15 Для ввода/изменения данных использую модальный диалог. Возможна ситуация, когда юзверь чего-нибудь изменит, но потом передумает, и попытается диалог закрыть. Я поставил фильтр событий, к-рый отлавливает запрос на закрытие диалога, и тупо написал в обработчике :
if (event->type() == QEvent::Hide) { model->revertAll(); return true; } Срабатывает корректно, но может правильно добавить еще и проверку, находится ли модель в режиме редактирования? Или такая проверка этой функцией самой делается, судя по её поведению? Название: Re: как правильнее вызывать model->revertAll(); Отправлено: ритт от Март 10, 2009, 23:57 раз диалог модальный, зачем вешать фильтр событий?
не проще ли: Код: if (!dialog.exec()) а по теме - разве у модели есть режим редактирования? :) Название: Re: как правильнее вызывать model->revertAll(); Отправлено: ranet от Март 11, 2009, 10:57 Немножко подробней:
нажал пользователь "добавить", появился диалог добавления (с LineEdit'ами, привинченными через mapper к модели), одновременно выполнена команда model->insertRow(row); функция model->submitAll(); пока не вызывалась, она будет вызвана по нажатию пользователем кнопки "сохранить", когда он закончит вводить данные. Это состояние я и назвал "режимом редактирования модели" возможно не слишком удачно.. Данные изменены в модели, но еще не зафиксированы в базе. Если он сейчас вместо "сохранить" закроет диалог, то нужно вызвать model->revertAll(); Вот я и сделал перехват события, чтобы независимо от способа и момента закрытия диалога пользователем всегда выполнялось model->revertAll(); Правда если нажали "сохранить", то диалог тоже прячется, вызывается model->submitAll(); и тоже срабатывает model->revertAll(); Вот я и спросил, хорошо ли так делать или в этом косяк какой есть. Работает нормально, но вдруг.. Название: Re: как правильнее вызывать model->revertAll(); Отправлено: ranet от Март 11, 2009, 11:12 сформулирую вопрос совсем коротко:
если было model->insertRow(row); и мы вызвали model->revertAll(); то все понятно. А если model->insertRow(row); не было, или после него мы УЖЕ вызвали model->submitAll(); выполнение model->revertAll(); вроде безвредно проходит.. Но хорошо ли это? Название: Re: как правильнее вызывать model->revertAll(); Отправлено: ритт от Март 14, 2009, 14:20 нормально
Название: Re: как правильнее вызывать model->revertAll(); Отправлено: ranet от Март 16, 2009, 10:14 Спасибо, оставляю так:)
|