diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 6e67989158b6424f4da2f06c0bc1591016eb471e..4415a73209c396e1025d97cf0865364c1cbcc004 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -177,7 +177,10 @@ void QtVersionManager::apply()
             }
         }
     }
-    m_versions = m_widget->versions();
+    qDeleteAll(m_versions);
+    m_versions.clear();
+    foreach(QtVersion *version, m_widget->versions())
+        m_versions.append(new QtVersion(*version));
     if (versionPathsChanged)
         updateDocumentation();
     updateUniqueIdToIndexMap();
@@ -361,11 +364,16 @@ QtVersion *QtVersionManager::currentQtVersion() const
 
 QtDirWidget::QtDirWidget(QWidget *parent, QList<QtVersion *> versions, int defaultVersion)
     : QWidget(parent)
-    , m_versions(versions)
     , m_defaultVersion(defaultVersion)
     , m_specifyNameString(tr("<specify a name>"))
     , m_specifyPathString(tr("<specify a path>"))
 {
+    // Initialize m_versions
+    foreach(QtVersion *version, versions) {
+        m_versions.append(new QtVersion(*version));
+    }
+
+
     m_ui.setupUi(this);
     m_ui.qtPath->setExpectedKind(Core::Utils::PathChooser::Directory);
     m_ui.qtPath->setPromptDialogTitle(tr("Select QTDIR"));
@@ -417,6 +425,11 @@ QtDirWidget::QtDirWidget(QWidget *parent, QList<QtVersion *> versions, int defau
     updateState();
 }
 
+QtDirWidget::~QtDirWidget()
+{
+    qDeleteAll(m_versions);
+}
+
 void QtDirWidget::addQtDir()
 {
     QtVersion *newVersion = new QtVersion(m_specifyNameString, m_specifyPathString);
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index f6ccd017b67e7edd9cd16548e06cfd967d3604d1..11e5ec8235922558fc83d9582fab762c77c18c2e 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -122,7 +122,6 @@ private:
     // This is updated on first call to qmakeCommand
     // That function is called from updateVersionInfo()
     mutable QString m_qtVersionString;
-    Q_DISABLE_COPY(QtVersion);
 };
 
 
@@ -131,6 +130,7 @@ class QtDirWidget : public QWidget
     Q_OBJECT
 public:
     QtDirWidget(QWidget *parent, QList<QtVersion *> versions, int defaultVersion);
+    ~QtDirWidget();
     QList<QtVersion *> versions() const;
     int defaultVersion() const;
     void finish();