PDA

View Full Version : eventFilter, Focus event and shortcut dispatching



tuli
25th May 2013, 20:13
Hey,


I have multiple custom widgets, wrapped in QDockWidgets and docked next to each other. I'd like to know which docking widget the user worked with last, so i implemented the focusEvent:


virtual void focusInEvent(QFocusEvent*);

in the custom QDockWidget.
However, the function is called only once (when the widget is initially shown) and not when i focus a widget (by for example clicking on it).
Why not?

edit:
Undocking focuses the widget! Not sure why and how, though, it is not via focusInEvent().


A related problem is the dispatching of shortcuts for the individual widgets. All of them implement the same, resulting in a "Ambiguous shortcut overload" when several widgets are visible simultaneously.
I was told to implement the eventFiler() function for the QMainWindow, listen for FocusEvents and call the appropriate widget. THis is a little tricky as with shortcut recognition and widget identification, but the eventFilter is also not called at
all:



bool eventFilter(QObject *object, QEvent *event)
{
if(event->type() == QEvent:FocusIn)
{
...

return false;
}


What's wrong with my event filter? Is there genrally a better approach of handling shortcuts? One would assume that in the case of "ambiguous" shortcuts the focused widget would receive them.