diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp
index 6060e470937b9c3f900dfd5653090515fec4e14f..1c69314fa80b4567061f90bdf7feef00b1059710 100644
--- a/src/plugins/debugger/debuggerkitconfigwidget.cpp
+++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp
@@ -100,6 +100,13 @@ DebuggerKitConfigWidget::DebuggerKitConfigWidget(ProjectExplorer::Kit *k,
     connect(m_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(refreshLabel()));
 }
 
+void DebuggerKitConfigWidget::addToLayout(QGridLayout *layout, int row)
+{
+    addLabel(layout, row);
+    layout->addWidget(this, row, WidgetColumn, 3 , 1);
+    addButtonWidget(layout, row + 2);
+}
+
 QString DebuggerKitConfigWidget::displayName() const
 {
     return tr("Debugger:");
diff --git a/src/plugins/debugger/debuggerkitconfigwidget.h b/src/plugins/debugger/debuggerkitconfigwidget.h
index a54ee648b8c987d89029f3d2722c5056167ababe..4884ff7bd766232db33ba77967a55ce8244b7a4d 100644
--- a/src/plugins/debugger/debuggerkitconfigwidget.h
+++ b/src/plugins/debugger/debuggerkitconfigwidget.h
@@ -69,6 +69,7 @@ public:
     void discard();
     bool isDirty() const;
     QWidget *buttonWidget() const;
+    void addToLayout(QGridLayout *layout, int row);
 
     DebuggerEngineType engineType() const;
     void setEngineType(DebuggerEngineType et);
diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h
index d48033dbc810b2de8bdd14a588b12b48b25df966..e8e141c86713bf06922c6f2147e44c9b47a6fa53 100644
--- a/src/plugins/projectexplorer/kitconfigwidget.h
+++ b/src/plugins/projectexplorer/kitconfigwidget.h
@@ -35,6 +35,8 @@
 
 #include <QWidget>
 
+QT_FORWARD_DECLARE_CLASS(QGridLayout)
+
 namespace ProjectExplorer {
 
 // --------------------------------------------------------------------------
@@ -46,6 +48,12 @@ class PROJECTEXPLORER_EXPORT KitConfigWidget : public QWidget
     Q_OBJECT
 
 public:
+    enum LayoutColumns {
+        LabelColumn,
+        WidgetColumn,
+        ButtonColumn
+    };
+
     KitConfigWidget(QWidget *parent = 0) : QWidget(parent)
     { }
 
@@ -57,8 +65,15 @@ public:
     virtual bool isDirty() const = 0;
 
     virtual QWidget *buttonWidget() const { return 0; }
+
+    virtual void addToLayout(QGridLayout *layout, int row);
+
 signals:
     void dirty();
+
+protected:
+    void addLabel(QGridLayout *layout, int row);
+    void addButtonWidget(QGridLayout *layout, int row);
 };
 
 } // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
index 452127be9626b63315ef42e0ae3937faccebc17a..66dd2845b3aeca9034930301891a6676ca3f3835 100644
--- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
+++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
@@ -44,6 +44,32 @@
 #include <QStyle>
 
 namespace ProjectExplorer {
+
+void KitConfigWidget::addToLayout(QGridLayout *layout, int row)
+{
+    addLabel(layout, row);
+    layout->addWidget(this, row, WidgetColumn);
+    addButtonWidget(layout, row);
+}
+
+void KitConfigWidget::addLabel(QGridLayout *layout, int row)
+{
+    static const Qt::Alignment alignment
+        = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment));
+    QLabel *label = new QLabel(displayName());
+    label->setToolTip(toolTip());
+    layout->addWidget(label, row, LabelColumn, alignment);
+}
+
+void KitConfigWidget::addButtonWidget(QGridLayout *layout, int row)
+{
+    if (QWidget *button = buttonWidget()) {
+        if (button->toolTip().isEmpty())
+            button->setToolTip(toolTip());
+        layout->addWidget(button, row, ButtonColumn);
+    }
+}
+
 namespace Internal {
 
 KitManagerConfigWidget::KitManagerConfigWidget(Kit *k, QWidget *parent) :
@@ -122,19 +148,7 @@ void KitManagerConfigWidget::addConfigWidget(ProjectExplorer::KitConfigWidget *w
     Q_ASSERT(!m_widgets.contains(widget));
 
     connect(widget, SIGNAL(dirty()), this, SIGNAL(dirty()));
-    int row = m_layout->rowCount();
-    QLabel *label = new QLabel(widget->displayName());
-    label->setToolTip(widget->toolTip());
-    m_layout->addWidget(label, row, 0,
-                        Qt::Alignment(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment)));
-    m_layout->addWidget(widget, row, 1);
-    QWidget *buttonWidget = widget->buttonWidget();
-    if (buttonWidget) {
-        if (buttonWidget->toolTip().isEmpty())
-            buttonWidget->setToolTip(widget->toolTip());
-        m_layout->addWidget(widget->buttonWidget(), row, 2);
-    }
-
+    widget->addToLayout(m_layout, m_layout->rowCount());
     m_widgets.append(widget);
 }