Russian Qt Forum

Qt => Model-View (MV) => Тема начата: SpiritFire от Февраль 14, 2010, 18:53



Название: Перехват закрытия делегата
Отправлено: SpiritFire от Февраль 14, 2010, 18:53
Скажите, пожалуйста, как перехватить закрытие делегата?

Я понял, что можно в eventFilter ловить нажатия клавишь, но закрытие может быть вызвано и мышью, и даже програмной сменой фокуса... В свою очередь ловить смены фокуса для делегата я думаю очень неудобно, поскольку сам виджет делегата состоит из двух контроллов, и перемещение фокуса между ними не должно приводить к закрытию эдитора. И возникают сомнения в том, что получив сигнал о смене фокуса при определенных обстоятельствах смогу отменить закрытие эдитора.

Вопрос в том, можно ли как-то удобно перехватить момент закрытия эдитора и повлиять на возможность его закрыть?

Что делается: делается делегат для ввода пути. Состоит из QLineEdit-a и QToolButton-a. Возможно, и из иконки. При закрытии эдитора проверяется, что путь существует, и если его не существует - выдается соответствующее предупреждение в возможностью продолжить редактирование пути, отменить изменения, или все же сохранить указанное значение.


PS. Обработка QEvent::Close в editorEvent не помогает - событие туда не доходит


Название: Re: Перехват закрытия делегата
Отправлено: break от Февраль 14, 2010, 21:17
Цитировать
QEvent::Close в editorEvent
Если я правильно понял то эдитор делегата у вас - это самостоятельное окошко - может стоит в нем ловить Close - оно же закрывается - и выводить уже модальное окошко с вопросом?