diff --git a/modules/gui/src/panel_bar/panel_bar.cc b/modules/gui/src/panel_bar/panel_bar.cc
index 3f0579d95804a8b874380125d40959ab7626d1a7..db90f50d33ea08f0a312b020a4f66c20c66b64af 100644
--- a/modules/gui/src/panel_bar/panel_bar.cc
+++ b/modules/gui/src/panel_bar/panel_bar.cc
@@ -114,6 +114,7 @@ bool PanelBar::Save(const QString& prefix)
       settings.setArrayIndex(i);
       settings.setValue("class_name", widget_states_.at(i).name);
       settings.setValue("show", widget_states_.at(i).visible);
+      widget_states_.at(i).widget->Save(settings.group());
       ++index;
     }
   }
@@ -169,6 +170,13 @@ bool PanelBar::Restore(const QString& prefix)
       pwc->Restore(prefix);
     }
   }
+
+  for (int i = 0; i < widget_states_.size(); ++i) {
+    if (widget_states_.at(i).widget) {
+      QString path = prefix + "/items/" + QString::number(i+1);
+      widget_states_.at(i).widget->Restore(path);
+    }
+  }
   settings.endGroup();
   return true;
 }