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?
1 Answer
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
break
It can then be placed by calling addWidget
on any QLayout
.