diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h
index b1d518900e2d17fe198746379bdb8c43f3cfb2ac..ccee9c32690a8bdc8359fc0959375f53e2e2993b 100644
--- a/src/plugins/projectexplorer/kitconfigwidget.h
+++ b/src/plugins/projectexplorer/kitconfigwidget.h
@@ -53,6 +53,7 @@ public:
     virtual QString toolTip() const { return QString(); }
     virtual void makeReadOnly() = 0;
     virtual void refresh() = 0;
+    virtual bool visibleInKit() { return true; }
 
     virtual QWidget *mainWidget() const = 0;
     virtual QWidget *buttonWidget() const { return 0; }
diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp
index 44c3c1910b80cefcb709c8c6753284c31caca7af..b57869d1b266ab10fc90151d27368bdf8e442f78 100644
--- a/src/plugins/projectexplorer/kitmanager.cpp
+++ b/src/plugins/projectexplorer/kitmanager.cpp
@@ -379,6 +379,8 @@ Internal::KitManagerConfigWidget *KitManager::createConfigWidget(Kit *k) const
     foreach (KitInformation *ki, d->m_informationList)
         result->addConfigWidget(ki->createConfigWidget(result->workingCopy()));
 
+    result->updateVisibility();
+
     return result;
 }
 
diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h
index bfe1b9ff38060731b3245d8a23eb0f2c0384d0b8..418037855971c727cb4e406f8db075024c0af47b 100644
--- a/src/plugins/projectexplorer/kitmanager.h
+++ b/src/plugins/projectexplorer/kitmanager.h
@@ -72,7 +72,6 @@ public:
 
     virtual unsigned int priority() const = 0; // the higher the closer to the top.
 
-    virtual bool visibleIn(Kit *) { return true; }
     virtual QVariant defaultValue(Kit *) const = 0;
 
     // called to find issues with the kit
diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
index 52421f30519833621945a4355f37f52b117a43f9..64af360bed0bf46f231f523076b1e1187a70edf4 100644
--- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
+++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
@@ -75,8 +75,11 @@ KitManagerConfigWidget::KitManagerConfigWidget(Kit *k) :
     mainLayout->setMargin(1);
     mainLayout->addWidget(scroll, 0, 0);
 
+    static const Qt::Alignment alignment
+            = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment));
     QString toolTip = tr("Kit name and icon.");
-    setLabel(tr("Name:"), toolTip, 0);
+    QLabel *label = createLabel(tr("Name:"), toolTip);
+    m_layout->addWidget(label, 0, LabelColumn, alignment);
     m_iconButton->setToolTip(toolTip);
 
     discard();
@@ -171,9 +174,26 @@ void KitManagerConfigWidget::addConfigWidget(ProjectExplorer::KitConfigWidget *w
     m_layout->addWidget(widget->mainWidget(), row, WidgetColumn);
     if (QWidget *button = widget->buttonWidget())
         m_layout->addWidget(button, row, ButtonColumn);
-    setLabel(name, toolTip, row);
 
+    static const Qt::Alignment alignment
+        = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment));
+    QLabel *label = createLabel(name, toolTip);
+    m_layout->addWidget(label, row, LabelColumn, alignment);
     m_widgets.append(widget);
+    m_labels.append(label);
+}
+
+void KitManagerConfigWidget::updateVisibility()
+{
+    int count = m_widgets.count();
+    for (int i = 0; i < count; ++i) {
+        KitConfigWidget *widget = m_widgets.at(i);
+        bool visible = widget->visibleInKit();
+        widget->mainWidget()->setVisible(visible);
+        if (widget->buttonWidget())
+            widget->buttonWidget()->setVisible(visible);
+        m_labels.at(i)->setVisible(visible);
+    }
 }
 
 void KitManagerConfigWidget::makeReadOnly()
@@ -249,6 +269,7 @@ void KitManagerConfigWidget::workingCopyWasUpdated(Kit *k)
         w->refresh();
     m_nameEdit->setText(k->displayName());
     m_iconButton->setIcon(k->icon());
+    updateVisibility();
     emit dirty();
 }
 
@@ -256,15 +277,14 @@ void KitManagerConfigWidget::kitWasUpdated(Kit *k)
 {
     if (m_kit == k)
         discard();
+    updateVisibility();
 }
 
-void KitManagerConfigWidget::setLabel(const QString &name, const QString &toolTip, int row)
+QLabel *KitManagerConfigWidget::createLabel(const QString &name, const QString &toolTip)
 {
-    static const Qt::Alignment alignment
-        = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment));
     QLabel *label = new QLabel(name);
     label->setToolTip(toolTip);
-    m_layout->addWidget(label, row, LabelColumn, alignment);
+    return label;
 }
 
 void KitManagerConfigWidget::paintEvent(QPaintEvent *)
diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h
index 8c969aa6cfec817d079b348b8c0df5fd3a61aa04..0945e6dc368c28ad9117bb38bd886a02c9a811e2 100644
--- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h
+++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h
@@ -36,6 +36,7 @@
 
 QT_BEGIN_NAMESPACE
 class QGridLayout;
+class QLabel;
 class QLineEdit;
 class QToolButton;
 QT_END_NAMESPACE
@@ -68,6 +69,7 @@ public:
     void setIsDefaultKit(bool d);
     bool isDefaultKit() const;
     void removeKit();
+    void updateVisibility();
 
 signals:
     void dirty();
@@ -85,13 +87,14 @@ private:
         ButtonColumn
     };
 
-    void setLabel(const QString &name, const QString &toolTip, int row);
+    QLabel *createLabel(const QString &name, const QString &toolTip);
     void paintEvent(QPaintEvent *ev);
 
     QGridLayout *m_layout;
     QToolButton *m_iconButton;
     QLineEdit *m_nameEdit;
     QList<KitConfigWidget *> m_widgets;
+    QList<QLabel *> m_labels;
     Kit *m_kit;
     Kit *m_modifiedKit;
     bool m_isDefaultKit;