i'm working on a QGIS-plugin and want to move the default LayerPanel/Dockwidget to somewhere else programmatically. More specific: i want to move it into a tab of my tabwidget. Is this possible? How can i get access to that specic dockwidget out of python?


qgis.utils.iface.mainWindow() has findChild and findChildren methods.

Unfortunately the QDockWidgets that display a title of "Layers" and "Layer Order" both have an objectName of "Legend".

This code will gain access to the right widget:

from PyQt4.QtGui import *

layersDockWidget = None
legendDockWidgets = qgis.utils.iface.mainWindow().findChildren(QDockWidget, "Legend")
for dockWidget in legendDockWidgets:
  if dockWidget.windowTitle() == "Layers":
    layersDockWidget = dockWidget

It can then be placed by calling addWidget on any QLayout.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.