ZZZ
Май 27, 2009 07:51:26
Привет всем!
Есть диалог с несколькими виджетами, нарисованный в дизайнере. Задача перехватить изменения фокуса. Если точнее его потерю.
Т.е. есть, например, TextEdit. В нём юзер что-то умное пишет… А потом берёт, да и переключается на LineEdit рядом. “Вот сволочь”, – думаем мы и выполняем какое-нить умное действие в объекте-родителе, например. Притом, надо перехватить именно потерю фокуса и при этом не имея доступа к классу объекта.
Это вообще реально?
poltergeist
Май 27, 2009 10:34:40
Так как все обработчики событий в Qt являются защищенными (protected), их можно переопределить только в дочерних классах. Снаружи можно только встроить эвент фильтр и перехватывать события QFocusEvent:
http://doc.trolltech.com/4.5/eventsandfilters.html#event-filters
ZZZ
Май 27, 2009 12:03:52
Собственно уже разобрался… Я просто сходу не увидел QWidget.focusOutEvent… Хотя, кстати, смотрел в эту сторону – если хочешь что-то спрятать, положи на самое видное место и никто этого не найдёт. Никогда. :-)
Спасибо, poltergeist.