![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
radislav72 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 11 Регистрация: 1.4.2010 Пользователь №: 1585 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Помогите с такой проблемой.
Есть дилог - потомок QDialog, создан в дизайнере QTCreatorа. В нем переопределен обработчик события closeEvent:
Реализация closeEvent такая:
Сам диалог показывается таким образом:
На диалоге есть buttonBox с кнопками ОК и Отмена. Нужно сделать так, чтобы при нажатии ОК проверялись данные формы, и если они не правильны, выдавалось сообщение и диалог не закрывался. Если нажимается Отмена- диалог закрывается по-любому. По идее, в приведенном коде диалог не должен закрыться. Но он закрывается. И сообщение "CloseEvent!" вообще никогда не показывается. Почему? В чем ошибка? Если делать так для MainWindow, все работает прекрасно. Уже второй день мучаюсь ![]() |
|
|
![]() |
kwisp |
![]()
Сообщение
#2
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
radislav72,
читай внимательнее про QDialog тебе вообще по идее не нужен closeEvent нужно лишь переопределить 2 слота accept() && reject() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
e->ignore(); это первое, что бросилось в глаза, даже не читая самого сообщения.QDialog::closeEvent(e); Ты либо игнорируешь событие, либо передаёшь его обработку в базовый класс. Для того, чтобы событие закрытия не произошло, нужно игнорировать. И вообще тебе этот обработчик не нужен для того, чтобы отслеживать "Ок". Нужно просто переопределить слот accept() kwisp, опередил ![]() |
|
|
kwisp |
![]()
Сообщение
#4
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
radislav72 |
![]()
Сообщение
#5
|
Студент ![]() Группа: Новичок Сообщений: 11 Регистрация: 1.4.2010 Пользователь №: 1585 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Большое спасибо за подсказки!
Все решилось очень просто ![]()
А в предыдущем неправильном варианте: * лишней была строка
* при нажатии на стандартную кнопку закрытия окна в верх. прав. углу событие действительно возникало |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
radislav72 |
![]()
Сообщение
#7
|
Студент ![]() Группа: Новичок Сообщений: 11 Регистрация: 1.4.2010 Пользователь №: 1585 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Исправлю себя:
Так работает хорошо вроде |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 22.6.2025, 6:13 |