Название: QDialog и событие hide(); Отправлено: admsasha от Сентябрь 22, 2009, 04:55 Есть модальное окно, созданное через Designer. Как сделать, чтобы при нажатии esc окно не закрывалось ?
Название: Re: QDialog и событие hide(); Отправлено: erslee от Сентябрь 22, 2009, 09:46 А если установить eventFilter и отлавливать нажатие клавиши и не пускать его дальше
Название: Re: QDialog и событие hide(); Отправлено: admsasha от Сентябрь 23, 2009, 02:51 А если установить eventFilter и отлавливать нажатие клавиши и не пускать его дальше Сделал такКод: this->installEventFilter(this); Название: Re: QDialog и событие hide(); Отправлено: ildar от Сентябрь 23, 2009, 10:47 вот здесь есть мысли на этот счет
http://lists.trolltech.com/qt-interest/2005-04/thread00872-0.html (http://lists.trolltech.com/qt-interest/2005-04/thread00872-0.html) Название: Re: QDialog и событие hide(); Отправлено: baka от Сентябрь 24, 2009, 09:28 Обработка нажатия на Esc в QDialog выглядит так...
Код: void QDialog::keyPressEvent(QKeyEvent *e) т.е. можно перекрыть keyPressEvent. Код: void MyDialog::keyPressEvent(QKeyEvent *e) { Название: Re: QDialog и событие hide(); Отправлено: SABROG от Сентябрь 24, 2009, 11:51 Или перекрыть reject().
Название: Re: QDialog и событие hide(); Отправлено: admsasha от Сентябрь 24, 2009, 12:55 Спасибо за советы, сделал через eventFilter отлавливая keyPressEvent ESC
Название: Re: QDialog и событие hide(); Отправлено: Alex Custov от Сентябрь 24, 2009, 13:11 правильное решение - переопределить keyPressEvent(). Вообще-то непонятно, почему такое поведение никак не регулируется. Мне тоже надо было отключить ESC в нескольких диалогах, было бы значительно удобнее иметь стандартный метод QDialog::setCloseOnEsc() или типа того.
Название: Re: QDialog и событие hide(); Отправлено: baka от Сентябрь 24, 2009, 18:56 Может даже лучше написать DialogUtils::deprecateEsc(QDialog *);
или DialogUtils::setRejectKey(QDialog*, Qt::Key); а в теле deprecateEsc(QDialog *) подвешивать к диалогу eventFilter можно будет потом в других проектах использовать одной строчкой. |