Russian Qt Forum
Ноябрь 27, 2024, 12:28
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
как правильнее вызывать model->revertAll();
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: как правильнее вызывать model->revertAll(); (Прочитано 3532 раз)
ranet
Гость
как правильнее вызывать model->revertAll();
«
:
Март 10, 2009, 17:15 »
Для ввода/изменения данных использую модальный диалог. Возможна ситуация, когда юзверь чего-нибудь изменит, но потом передумает, и попытается диалог закрыть. Я поставил фильтр событий, к-рый отлавливает запрос на закрытие диалога, и тупо написал в обработчике :
if (event->type() == QEvent::Hide)
{
model->revertAll();
return true;
}
Срабатывает корректно, но может правильно добавить еще и проверку, находится ли модель в режиме редактирования? Или такая проверка этой функцией самой делается, судя по её поведению?
Записан
ритт
Гость
Re: как правильнее вызывать model->revertAll();
«
Ответ #1 :
Март 10, 2009, 23:57 »
раз диалог модальный, зачем вешать фильтр событий?
не проще ли:
Код:
if (!dialog.exec())
model->revertAll();
?
а по теме - разве у модели есть режим редактирования?
Записан
ranet
Гость
Re: как правильнее вызывать model->revertAll();
«
Ответ #2 :
Март 11, 2009, 10:57 »
Немножко подробней:
нажал пользователь "добавить", появился диалог добавления (с LineEdit'ами, привинченными через mapper к модели), одновременно выполнена команда model->insertRow(row);
функция
model->submitAll();
пока не вызывалась, она будет вызвана по нажатию пользователем кнопки "сохранить", когда он закончит вводить данные.
Это состояние я и назвал "режимом редактирования модели" возможно не слишком удачно.. Данные изменены в модели, но еще не зафиксированы в базе.
Если он сейчас вместо "сохранить" закроет диалог, то нужно вызвать model->revertAll(); Вот я и сделал перехват события, чтобы независимо от способа и момента закрытия диалога пользователем всегда выполнялось model->revertAll();
Правда если нажали "сохранить", то диалог тоже прячется, вызывается model->submitAll(); и тоже срабатывает model->revertAll(); Вот я и спросил, хорошо ли так делать или в этом косяк какой есть. Работает нормально, но вдруг..
Записан
ranet
Гость
Re: как правильнее вызывать model->revertAll();
«
Ответ #3 :
Март 11, 2009, 11:12 »
сформулирую вопрос совсем коротко:
если было
model->insertRow(row);
и мы вызвали
model->revertAll();
то все понятно.
А если
model->insertRow(row);
не было, или после него мы УЖЕ вызвали
model->submitAll();
выполнение model->revertAll(); вроде безвредно проходит.. Но хорошо ли это?
Записан
ритт
Гость
Re: как правильнее вызывать model->revertAll();
«
Ответ #4 :
Март 14, 2009, 14:20 »
нормально
Записан
ranet
Гость
Re: как правильнее вызывать model->revertAll();
«
Ответ #5 :
Март 16, 2009, 10:14 »
Спасибо, оставляю так:)
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...