diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index f9990c522fb4d6a8e2748c4b66c17139c3a96c8d..5d05003e8ce88e048a5851d59c0e8a3adc4fa044 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -845,7 +845,7 @@ void Qt4ProFileNode::updateUiFiles()
         }
         addFileNodes(toAdd, this);
     }
-    modelManager->updateSourceFiles(toUpdate);
+    m_project->addUiFilesToCodeModel(toUpdate);
 }
 
 ProFileReader *Qt4PriFileNode::createProFileReader() const
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index a8fdc907cd0bb1a24a4fdb4fab2092a45f443310..9885221c0c4e2fdc45519d7d12bf72a424caa9e2 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -255,6 +255,10 @@ Qt4Project::Qt4Project(Qt4Manager *manager, const QString& fileName) :
     m_updateCodeModelTimer.setSingleShot(true);
     m_updateCodeModelTimer.setInterval(20);
     connect(&m_updateCodeModelTimer, SIGNAL(timeout()), this, SLOT(updateCodeModel()));
+
+    m_addUiFilesTimer.setSingleShot(true);
+    m_addUiFilesTimer.setInterval(20);
+    connect(&m_addUiFilesTimer, SIGNAL(timeout()), this, SLOT(addUiFiles()));
 }
 
 Qt4Project::~Qt4Project()
@@ -370,6 +374,27 @@ namespace {
     };
 }
 
+void Qt4Project::addUiFilesToCodeModel(const QStringList &files)
+{
+    // if we already have a full updateCodeModel() scheduled
+    // then we don't need to this seperately
+    // since that one will add also all the ui files
+    if (m_updateCodeModelTimer.isActive())
+        return;
+    m_addUiFilesTimer.start();
+    m_uiFilesToAdd << files;
+}
+
+void Qt4Project::addUiFiles()
+{
+    if (m_updateCodeModelTimer.isActive())
+        return;
+    CppTools::CppModelManagerInterface *modelManager =
+        ExtensionSystem::PluginManager::instance()->getObject<CppTools::CppModelManagerInterface>();
+    modelManager->updateSourceFiles(m_uiFilesToAdd);
+    m_uiFilesToAdd.clear();
+}
+
 void Qt4Project::scheduleUpdateCodeModel()
 {
     m_updateCodeModelTimer.start();
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index 24b7e45d6e8dc8e4ee648925e678c89fdc8117a0..0c4a5fb57dcaf1ebe9b8edcab745c0957c39fb6a 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -182,6 +182,9 @@ public:
 
     void notifyChanged(const QString &name);
 
+    // called by qt4ProjectNode to add ui_*.h files to the codemodel
+    void addUiFilesToCodeModel(const QStringList &files);
+
 public slots:
     void update();
     void proFileParseError(const QString &errorMessage);
@@ -200,6 +203,7 @@ private slots:
                             const Qt4ProjectManager::Internal::Qt4ProjectType oldType,
                             const Qt4ProjectManager::Internal::Qt4ProjectType newType);
     void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node);
+    void addUiFiles();
 
 protected:
     virtual void restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader &settingsReader);
@@ -232,6 +236,8 @@ private:
     Internal::Qt4ProjectFiles *m_projectFiles;
 
     QTimer m_updateCodeModelTimer;
+    QTimer m_addUiFilesTimer;
+    QStringList m_uiFilesToAdd;
     Internal::GCCPreprocessor m_preproc;
 
     friend class Qt4ProjectFile;