diff --git a/src/plugins/cpptools/cppcodemodelsettings.cpp b/src/plugins/cpptools/cppcodemodelsettings.cpp
index d319f5c5dbe33dcb2cae4db0d70322161dfb23ae..ae1f319111bb2b96b1616c137824dbee8731826f 100644
--- a/src/plugins/cpptools/cppcodemodelsettings.cpp
+++ b/src/plugins/cpptools/cppcodemodelsettings.cpp
@@ -34,6 +34,9 @@
 using namespace CppTools;
 using namespace CppTools::Internal;
 
+static QLatin1String cppHeaderMimeType(Constants::CPP_HEADER_MIMETYPE);
+static QLatin1String cHeaderMimeType(Constants::C_HEADER_MIMETYPE);
+
 void CppCodeModelSettings::fromSettings(QSettings *s)
 {
     s->beginGroup(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP));
@@ -42,6 +45,7 @@ void CppCodeModelSettings::fromSettings(QSettings *s)
     setIdForMimeType(supporters, QLatin1String(Constants::CPP_SOURCE_MIMETYPE));
     setIdForMimeType(supporters, QLatin1String(Constants::OBJECTIVE_C_SOURCE_MIMETYPE));
     setIdForMimeType(supporters, QLatin1String(Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE));
+    setIdForMimeType(supporters, QLatin1String(Constants::CPP_HEADER_MIMETYPE));
     QVariant v = s->value(QLatin1String(Constants::CPPTOOLS_MODEL_MANAGER_PCH_USAGE), PchUse_None);
     setPCHUsage(static_cast<PCHUsage>(v.toInt()));
     s->endGroup();
@@ -65,6 +69,23 @@ void CppCodeModelSettings::setModelManagerSupports(const QList<ModelManagerSuppo
         m_availableModelManagerSupportersByName[supporter->displayName()] = supporter->id();
 }
 
+QString CppCodeModelSettings::modelManagerSupportId(const QString &mimeType) const
+{
+    if (mimeType == cHeaderMimeType)
+        return m_modelManagerSupportByMimeType.value(cppHeaderMimeType);
+    else
+        return m_modelManagerSupportByMimeType.value(mimeType);
+}
+
+void CppCodeModelSettings::setModelManagerSupportId(const QString &mimeType,
+                                                    const QString &supporter)
+{
+    if (mimeType == cHeaderMimeType)
+        m_modelManagerSupportByMimeType.insert(cppHeaderMimeType, supporter);
+    else
+        m_modelManagerSupportByMimeType.insert(mimeType, supporter);
+}
+
 void CppCodeModelSettings::setIdForMimeType(const QVariant &var, const QString &mimeType)
 {
     QHash<QString, QVariant> mimeToId = var.toHash();
diff --git a/src/plugins/cpptools/cppcodemodelsettings.h b/src/plugins/cpptools/cppcodemodelsettings.h
index d1acc8331af86502bea3b83310368011bbec6618..84939905f592984dfdc9450d5b32ac9416a2b181 100644
--- a/src/plugins/cpptools/cppcodemodelsettings.h
+++ b/src/plugins/cpptools/cppcodemodelsettings.h
@@ -57,8 +57,8 @@ public:
 
     void setModelManagerSupports(const QList<ModelManagerSupport *> &supporters);
 
-    QString &modelManagerSupportId(const QString &mimeType)
-    { return m_modelManagerSupportByMimeType[mimeType]; }
+    QString modelManagerSupportId(const QString &mimeType) const;
+    void setModelManagerSupportId(const QString &mimeType, const QString &supporter);
 
     const QHash<QString, QString> &availableModelManagerSupportersByName() const
     { return m_availableModelManagerSupportersByName; }
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.cpp b/src/plugins/cpptools/cppcodemodelsettingspage.cpp
index 3a5b41224cbe0ff12e151b34bcd1d598d2a9eb10..ffacb11e5f3727202a1b5b341ab90cabeef12799 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.cpp
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.cpp
@@ -60,6 +60,7 @@ void CppCodeModelSettingsWidget::setSettings(const QSharedPointer<CppCodeModelSe
     applyToWidget(m_ui->cppChooser, QLatin1String(Constants::CPP_SOURCE_MIMETYPE));
     applyToWidget(m_ui->objcChooser, QLatin1String(Constants::OBJECTIVE_C_SOURCE_MIMETYPE));
     applyToWidget(m_ui->objcppChooser, QLatin1String(Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE));
+    applyToWidget(m_ui->hChooser, QLatin1String(Constants::C_HEADER_MIMETYPE));
 
     m_ui->ignorePCHCheckBox->setChecked(s->pchUsage() == CppCodeModelSettings::PchUse_None);
 }
@@ -88,6 +89,8 @@ void CppCodeModelSettingsWidget::applyToSettings() const
                                QLatin1String(Constants::OBJECTIVE_C_SOURCE_MIMETYPE));
     changed |= applyToSettings(m_ui->objcppChooser,
                                QLatin1String(Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE));
+    changed |= applyToSettings(m_ui->hChooser,
+                               QLatin1String(Constants::C_HEADER_MIMETYPE));
 
     if (m_ui->ignorePCHCheckBox->isChecked() !=
             (m_settings->pchUsage() == CppCodeModelSettings::PchUse_None)) {
@@ -104,11 +107,11 @@ void CppCodeModelSettingsWidget::applyToSettings() const
 bool CppCodeModelSettingsWidget::applyToSettings(QComboBox *chooser, const QString &mimeType) const
 {
     QString newId = chooser->itemData(chooser->currentIndex()).toString();
-    QString &currentId = m_settings->modelManagerSupportId(mimeType);
+    QString currentId = m_settings->modelManagerSupportId(mimeType);
     if (newId == currentId)
         return false;
 
-    currentId = newId;
+    m_settings->setModelManagerSupportId(mimeType, newId);
     return true;
 }
 
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.ui b/src/plugins/cpptools/cppcodemodelsettingspage.ui
index 310c01d966ebc8a8af0217390556be5edc0d61c0..1109649ceb6767e8a4db5dcbf07e0fed4fbb1c10 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.ui
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.ui
@@ -74,6 +74,16 @@
       <item row="3" column="1">
        <widget class="QComboBox" name="objcppChooser"/>
       </item>
+      <item row="4" column="0">
+       <widget class="QLabel" name="hLabel">
+        <property name="text">
+         <string>Headers</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1">
+       <widget class="QComboBox" name="hChooser"/>
+      </item>
      </layout>
     </widget>
    </item>