Focusing on a tabified QDockWidget in PyQt

brianz picture brianz · Aug 18, 2009 · Viewed 8.2k times · Source

I have three QDockWidgets which are tabbed at startup using QMainWindow.tabifyDockWidget.

In the main window, after all of the addDockWidget calls:

self.tabifyDockWidget(self.dock_widget1, self.dock_widget2)
self.tabifyDockWidget(self.dock_widget1, self.dock_widget3)

Based on certain actions, I'd like to select one of these tabs and bring it to focus, or, on top of the other two, if it's not already visible. I've tried using setVisible and setWindowState(Qt.WindowActive), but nothing changes.

Is there a way to programmatically select a tabbed dock widget and bring it to the front?

Answer

brianz picture brianz · Aug 19, 2009

Thanks to an answer on the qt-interest mailing list, this is very simple to do with QWidget.raise():

http://qt-project.org/doc/qt-4.8/qwidget.html#raise

In PyQt, it's QWidget.raise_():

http://pyqt.sourceforge.net/Docs/PyQt4/qwidget.html#raise