Thanks, adding .setObjectName() in the constructor of the dock widget subclass 
worked to restore the dimension of the widget. However, the dock widget does 
not show automatically at QGIS startup even if it was open during the last 
session. What is the proper way to achieve this?

 Here is the code that I'm using to initialize and run the dock widget:


    def initGui(self):
        """Create the menu entries and toolbar icons inside the QGIS GUI."""
        
        self.log("init")
        
        icon_path = ':/plugins/layout_panel/icon.png'
        self.add_action(
            icon_path,
            text=self.tr(u'Layout Panel'),
            callback=self.run,
            parent=self.iface.mainWindow())
                
        if self.dockwidget == None:
            self.dockwidget = LayoutPanelDockWidget(self.iface, 
self.iface.mainWindow())
            
        self.dockwidget.closingPlugin.connect(self.onClosePlugin)
        self.iface.addDockWidget(Qt.LeftDockWidgetArea, self.dockwidget)
              

    def onClosePlugin(self):
        """Cleanup necessary items here when plugin dockwidget is closed"""
        self.pluginIsActive = False


    def unload(self):
        """Removes the plugin menu item and icon from QGIS GUI."""

        for action in self.actions:
            self.iface.removePluginMenu(
                self.tr(u'&Layout Panel'),
                action)
            self.iface.removeToolBarIcon(action)
        # remove the toolbar
        del self.toolbar


    def run(self):
        """Run method that loads and starts the plugin"""
        if not self.pluginIsActive:
            self.pluginIsActive = True
            self.dockwidget.show()


Thank you!

Best,

--
Jean-Baptiste PETER

-----Original Message-----
From: Nyall Dawson <nyall.daw...@gmail.com> 
Sent: Wednesday, November 16, 2022 11:31 PM
To: Jean-Baptiste Peter <jbpe...@outlook.com>
Cc: qgis-developer@lists.osgeo.org
Subject: Re: [QGIS-Developer] How to restore dock widget plugin size after 
relaunch of QGIS?

On Thu, 17 Nov 2022 at 02:22, Jean-Baptiste Peter via QGIS-Developer 
<qgis-developer@lists.osgeo.org> wrote:
>
> Hi,
>
>
>
> I am working on a QGIS plugin which is based on QGIS plugin Builder dock 
> widget template. The default behavior of this template is that the dock 
> widget is not restored after closing and reopening QGIS. Here is the repo of 
> my plugin:
>
> https://github.com/jbp35/layout_panel

Try calling .setObjectName() in the constructor of your dock widget subclass. 
That's required for the standard QGIS dock arrangement save/restore code to 
work correctly. (That's all that's needed -- you don't need to manually do any 
calls to saveGeometry/restoreGeometry).

Also I suggest using the QgsDockWidget subclass as the base class for your 
widget, as it has some extra niceness added on top of the standard Qt 
QDockWidget class.

Nyall


>
>
>
> I managed to reopen the dock widget automatically when QGIS starts by calling 
> the run() function from initGui() function. However, the dimensions of the 
> widget is not saved and I am not able to figure out how to restore the width 
> and height of the widget. I tried to use QDockWidget::restoreGeometry without 
> success. Could someone please point me how to achieve this? Thanks!
>
>
>
> Best,
>
>
>
> --
>
> Jean-Baptiste PETER
>
>
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer@lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to