Уведомления

Группа в Telegram: @pythonsu

#1 Май 27, 2009 07:51:26

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Перехват потери фокуса в PyQt4

Привет всем!

Есть диалог с несколькими виджетами, нарисованный в дизайнере. Задача перехватить изменения фокуса. Если точнее его потерю.
Т.е. есть, например, TextEdit. В нём юзер что-то умное пишет… А потом берёт, да и переключается на LineEdit рядом. “Вот сволочь”, – думаем мы и выполняем какое-нить умное действие в объекте-родителе, например. Притом, надо перехватить именно потерю фокуса и при этом не имея доступа к классу объекта.
Это вообще реально?



Офлайн

#2 Май 27, 2009 10:34:40

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Перехват потери фокуса в PyQt4

Так как все обработчики событий в Qt являются защищенными (protected), их можно переопределить только в дочерних классах. Снаружи можно только встроить эвент фильтр и перехватывать события QFocusEvent: http://doc.trolltech.com/4.5/eventsandfilters.html#event-filters



Офлайн

#3 Май 27, 2009 12:03:52

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Перехват потери фокуса в PyQt4

Собственно уже разобрался… Я просто сходу не увидел QWidget.focusOutEvent… Хотя, кстати, смотрел в эту сторону – если хочешь что-то спрятать, положи на самое видное место и никто этого не найдёт. Никогда. :-)
Спасибо, poltergeist.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version