diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.cpp
index 3d106a06149ed5ec7fca88799120b2a59269f865..3ce14b5e9bbbaedfcb0b5e89522b2345b33bbd22 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.cpp
@@ -64,11 +64,7 @@ AutotoolsBuildSettingsWidget::AutotoolsBuildSettingsWidget(AutotoolsBuildConfigu
 
     m_pathChooser->setBaseDirectory(bc->target()->project()->projectDirectory());
     m_pathChooser->setPath(m_buildConfiguration->buildDirectory());
-}
-
-QString AutotoolsBuildSettingsWidget::displayName() const
-{
-    return QLatin1String("Autotools Manager");
+    setDisplayName(QLatin1String("Autotools Manager"));
 }
 
 void AutotoolsBuildSettingsWidget::buildDirectoryChanged()
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.h b/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.h
index 8000d2ae23e14b02e9c912c464a9288ccd3cd022..b8f4fb792905a3b4b4e50e1cdf608de0e5b734c9 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.h
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.h
@@ -59,8 +59,6 @@ class AutotoolsBuildSettingsWidget : public ProjectExplorer::BuildConfigWidget
 public:
     AutotoolsBuildSettingsWidget(AutotoolsBuildConfiguration *bc);
 
-    QString displayName() const;
-
 private slots:
     void buildDirectoryChanged();
 
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index 937e5347667f0f2cda2ed28cac1f9c1b844f41df..8c08a3a25ae1890e9fb3bf35293fac7bc3171903 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -933,11 +933,8 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
         m_changeButton->setEnabled(false);
     else
         m_changeButton->setEnabled(true);
-}
 
-QString CMakeBuildSettingsWidget::displayName() const
-{
-    return "CMake";
+    setDisplayName(QLatin1String("CMake"));
 }
 
 void CMakeBuildSettingsWidget::openChangeBuildDirectoryDialog()
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index 5aaacf99fafe4c1652fff4984736ad8df1c6bc01..392af8c3b208732eed64af0ef40568aa152cddb7 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -229,7 +229,6 @@ class CMakeBuildSettingsWidget : public ProjectExplorer::BuildConfigWidget
     Q_OBJECT
 public:
     CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc);
-    QString displayName() const;
 
 private slots:
     void openChangeBuildDirectoryDialog();
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
index cb9cb4bb45ffe6ff5d347c0c2f9ca878373d44b4..04f0952f28f06539e6d3208c4ea0021c8af26ccd 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
@@ -245,11 +245,7 @@ GenericBuildSettingsWidget::GenericBuildSettingsWidget(GenericBuildConfiguration
     m_buildConfiguration = bc;
     m_pathChooser->setBaseDirectory(bc->target()->project()->projectDirectory());
     m_pathChooser->setPath(m_buildConfiguration->rawBuildDirectory());
-}
-
-QString GenericBuildSettingsWidget::displayName() const
-{
-    return tr("Generic Manager");
+    setDisplayName(tr("Generic Manager"));
 }
 
 void GenericBuildSettingsWidget::buildDirectoryChanged()
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h
index 6a22e31b2d24562d448b808b2abc858039171e1c..d090bb37413893fc7b115f22ef3b45cc1bdc3beb 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h
@@ -96,8 +96,6 @@ class GenericBuildSettingsWidget : public ProjectExplorer::BuildConfigWidget
 public:
     GenericBuildSettingsWidget(GenericBuildConfiguration *bc);
 
-    QString displayName() const;
-
 private slots:
     void buildDirectoryChanged();
 
diff --git a/src/plugins/projectexplorer/buildenvironmentwidget.cpp b/src/plugins/projectexplorer/buildenvironmentwidget.cpp
index c3631713b3ef05b7269cadf2ce11866127a1b0a5..ee3ce72bd2e48c81ac8d6f8f0e7428ba455adb1f 100644
--- a/src/plugins/projectexplorer/buildenvironmentwidget.cpp
+++ b/src/plugins/projectexplorer/buildenvironmentwidget.cpp
@@ -65,11 +65,8 @@ BuildEnvironmentWidget::BuildEnvironmentWidget(BuildConfiguration *bc)
     m_buildEnvironmentWidget->setBaseEnvironment(m_buildConfiguration->baseEnvironment());
     m_buildEnvironmentWidget->setBaseEnvironmentText(m_buildConfiguration->baseEnvironmentText());
     m_buildEnvironmentWidget->setUserChanges(m_buildConfiguration->userEnvironmentChanges());
-}
 
-QString BuildEnvironmentWidget::displayName() const
-{
-    return tr("Build Environment");
+    setDisplayName(tr("Build Environment"));
 }
 
 void BuildEnvironmentWidget::environmentModelUserChangesChanged()
diff --git a/src/plugins/projectexplorer/buildenvironmentwidget.h b/src/plugins/projectexplorer/buildenvironmentwidget.h
index 921dc56cf87cda74a7637563b72db0f89401d2ce..e9cefd81ff45a04a6d24e55f86d2fde48cb67e0e 100644
--- a/src/plugins/projectexplorer/buildenvironmentwidget.h
+++ b/src/plugins/projectexplorer/buildenvironmentwidget.h
@@ -48,8 +48,6 @@ class PROJECTEXPLORER_EXPORT BuildEnvironmentWidget : public BuildConfigWidget
 public:
     BuildEnvironmentWidget(BuildConfiguration *bc);
 
-    QString displayName() const;
-
 private slots:
     void environmentModelUserChangesChanged();
     void clearSystemEnvironmentCheckBoxClicked(bool checked);
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index 4d5c9d6d3a2d6725d0b0ab71c19613a510ec3580..68f7f633d0732992e861162271ef518b2dc7a9d7 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -127,10 +127,25 @@ public:
         :QWidget(0)
         {}
 
-    virtual QString displayName() const = 0;
+    QString displayName() const
+    {
+        return m_displayName;
+    }
 
 signals:
     void displayNameChanged(const QString &);
+
+protected:
+    void setDisplayName(const QString &displayName)
+    {
+        if (m_displayName == displayName)
+            return;
+        m_displayName = displayName;
+        emit displayNameChanged(m_displayName);
+    }
+
+private:
+    QString m_displayName;
 };
 
 class PROJECTEXPLORER_EXPORT BuildStepConfigWidget
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index 6c3537b368bf7cbc7d196ca32b4e2ab5f05875ba..52d760e7ff7ad87fbe82ca98a8b2b62b7b637186 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -502,16 +502,12 @@ BuildStepsPage::BuildStepsPage(BuildConfiguration *bc, Core::Id id) :
     layout->addWidget(m_widget);
 
     m_widget->init(bc->stepList(m_id));
-}
-
-BuildStepsPage::~BuildStepsPage()
-{ }
 
-QString BuildStepsPage::displayName() const
-{
     if (m_id == Constants::BUILDSTEPS_BUILD)
-        return tr("Build Steps");
+        setDisplayName(tr("Build Steps"));
     if (m_id == Constants::BUILDSTEPS_CLEAN)
-        return tr("Clean Steps");
-    return QString();
+        setDisplayName(tr("Clean Steps"));
 }
+
+BuildStepsPage::~BuildStepsPage()
+{ }
diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h
index 05d4a546f60a599f018012e9200a77518d37aa08..70d46cc41a6389caae660456c58d269b0d7fd2d8 100644
--- a/src/plugins/projectexplorer/buildstepspage.h
+++ b/src/plugins/projectexplorer/buildstepspage.h
@@ -159,8 +159,6 @@ public:
     BuildStepsPage(BuildConfiguration *bc, Core::Id id);
     virtual ~BuildStepsPage();
 
-    QString displayName() const;
-
 private:
     Core::Id m_id;
     BuildStepListWidget *m_widget;
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index ad20bd8ed7b0e1eb19bc0e908c41965655ba34e7..f52739ce08ae2aec6d1d632d7c7d070557b97c9c 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -107,6 +107,8 @@ Qt4ProjectConfigWidget::Qt4ProjectConfigWidget(Qt4BuildConfiguration *bc)
     m_ui->shadowBuildDirEdit->setBaseDirectory(m_buildConfiguration->target()->project()->projectDirectory());
 
     buildDirectoryChanged();
+
+    setDisplayName(tr("General"));
 }
 
 Qt4ProjectConfigWidget::~Qt4ProjectConfigWidget()
@@ -133,11 +135,6 @@ void Qt4ProjectConfigWidget::environmentChanged()
     m_ui->shadowBuildDirEdit->setEnvironment(m_buildConfiguration->environment());
 }
 
-QString Qt4ProjectConfigWidget::displayName() const
-{
-    return tr("General");
-}
-
 void Qt4ProjectConfigWidget::buildDirectoryChanged()
 {
     if (m_ignoreChange)
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.h b/src/plugins/qt4projectmanager/qt4projectconfigwidget.h
index 934c10272add0bc6eb91bc072f26e9446d14cf2d..0c40fed346a9d9207b46c27e0e60acc72892ce03 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.h
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.h
@@ -56,8 +56,6 @@ public:
     Qt4ProjectConfigWidget(Qt4BuildConfiguration *bc);
     ~Qt4ProjectConfigWidget();
 
-    QString displayName() const;
-
 private slots:
     // User changes in our widgets
     void shadowBuildClicked(bool checked);