Explorar el Código

Add ctkLayoutManager::spacing

to control space between widgets in a layout.
Julien Finet hace 14 años
padre
commit
cff68b986e

+ 18 - 2
Libs/Widgets/ctkLayoutManager.cpp

@@ -37,6 +37,7 @@ ctkLayoutManagerPrivate::ctkLayoutManagerPrivate(ctkLayoutManager& object)
   :q_ptr(&object)
 {
   this->Viewport = 0;
+  this->Spacing = 0;
 }
 
 //-----------------------------------------------------------------------------
@@ -115,6 +116,21 @@ ctkLayoutManager::~ctkLayoutManager()
 }
 
 //-----------------------------------------------------------------------------
+int ctkLayoutManager::spacing()const
+{
+  Q_D(const ctkLayoutManager);
+  return d->Spacing;
+}
+
+//-----------------------------------------------------------------------------
+void ctkLayoutManager::setSpacing(int spacing)
+{
+  Q_D(ctkLayoutManager);
+  d->Spacing = spacing;
+  this->refresh();
+}
+
+//-----------------------------------------------------------------------------
 void ctkLayoutManager::refresh()
 {
   Q_D(ctkLayoutManager);
@@ -244,7 +260,6 @@ QLayoutItem* ctkLayoutManager::processElement(QDomElement element)
     {
     return this->widgetItemFromXML(element);
     }
-  qDebug() << element.tagName() << element.text();
   Q_ASSERT(element.tagName() != "layout" && element.tagName() != "view");
   return 0;
 }
@@ -252,6 +267,7 @@ QLayoutItem* ctkLayoutManager::processElement(QDomElement element)
 //-----------------------------------------------------------------------------
 QLayoutItem* ctkLayoutManager::processLayoutElement(QDomElement layoutElement)
 {
+  Q_D(ctkLayoutManager);
   Q_ASSERT(layoutElement.tagName() == "layout");
 
   QLayoutItem* layoutItem = this->layoutFromXML(layoutElement);
@@ -260,7 +276,7 @@ QLayoutItem* ctkLayoutManager::processLayoutElement(QDomElement layoutElement)
   if (layout)
     {
     layout->setContentsMargins(0,0,0,0);
-    layout->setSpacing(0);
+    layout->setSpacing(d->Spacing);
     }
   for(QDomNode child = layoutElement.firstChild();
       !child.isNull();

+ 5 - 1
Libs/Widgets/ctkLayoutManager.h

@@ -35,7 +35,8 @@ class ctkLayoutManagerPrivate;
 class CTK_WIDGETS_EXPORT ctkLayoutManager: public QObject
 {
   Q_OBJECT
-
+  /// Spacing between the widgets in a layout
+  Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
 public:
   /// Constructor
   ctkLayoutManager(QObject* parent = 0);
@@ -47,6 +48,9 @@ public:
   void setViewport(QWidget* widget);
   QWidget* viewport()const;
 
+  int spacing()const;
+  void setSpacing(int spacing);
+
   void refresh();
 
 public slots:

+ 1 - 0
Libs/Widgets/ctkLayoutManager_p.h

@@ -50,6 +50,7 @@ public:
   QWidget*       Viewport;
   QDomDocument   Layout;
   QSet<QWidget*> Views;
+  int            Spacing;
 };
 
 #endif