[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