[PyQt] Newbie: get one of several QDockWidgets to perform	action on
    Hans-Peter Jansen 
    hpj at urpla.net
       
    Tue Oct  5 14:36:34 BST 2010
    
    
  
On Tuesday 05 October 2010, 13:42:45 Knacktus wrote:
> Hi everyone,
>
> I'm kind of stuck to find the best approach for handling multiple
> dockwidgets.
>
> Imagine this case: I have a QMainWindow with two QDockWidgets. Each
> QDockWidget contains one QTreeView. Now I'd like to implement a button
> "Expand all" that calls a method "expand_all()" which in turn triggers
> the ExpandAll slot of the QTreeView which is active.
>
> I think I need to identify the QDockWidget, which had focus when I
> pressed the button. I've tried the following approaches:
>
> 1) qApp.hasFocus() in my "expand_all()" method --> didn't work, gives
> the focus of the button I pressed
>
> 2) qApp.activeWindow() --> didn't work, gives the QMainWindow
>
> Overall, I have a bit of a lack of understanding what's "active" and
> "focus" means in the context of QDockWidgets. Hints to documentation is
> appreciated.
Hi Jan,
the reason, that you cannot find anything related is most probably due to 
the concept of dock widgets in the sense of auxiliary widgets, where 
current focus from the application POV doesn't make much sense. 
But that isn't a problem, just reimplement focusInEvent and focusOutEvent in 
the tree views (or the container widget, you set with 
QDockWidget.setWidget()). Then track focus changes within the event 
handlers, which might send custom signals to your main widget or some 
such..
Hth,
Pete
    
    
More information about the PyQt
mailing list