diff --git a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp
index d78a3ebac930cfca6e91b3ebd5ec55e3db55d61a..85bcff190d52d512c0f954af2df5a59299152359 100644
--- a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp
+++ b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp
@@ -8,7 +8,10 @@ FileFilterBaseItem::FileFilterBaseItem(QObject *parent) :
         QmlProjectContentItem(parent),
         m_recurse(RecurseDefault)
 {
+    m_updateFileListTimer.setSingleShot(true);
+    m_updateFileListTimer.setInterval(50);
     connect(&m_dirWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(updateFileList()));
+    connect(&m_updateFileListTimer, SIGNAL(timeout()), this, SLOT(updateFileListNow()));
 }
 
 QString FileFilterBaseItem::directory() const
@@ -32,7 +35,7 @@ void FileFilterBaseItem::setDefaultDirectory(const QString &dirPath)
         return;
     m_defaultDir = dirPath;
 
-    updateFileList();
+    updateFileListNow();
 }
 
 QString FileFilterBaseItem::filter() const
@@ -155,6 +158,15 @@ QString FileFilterBaseItem::absoluteDir() const
 
 void FileFilterBaseItem::updateFileList()
 {
+    if (!m_updateFileListTimer.isActive())
+        m_updateFileListTimer.start();
+}
+
+void FileFilterBaseItem::updateFileListNow()
+{
+    if (m_updateFileListTimer.isActive())
+        m_updateFileListTimer.stop();
+
     const QString projectDir = absoluteDir();
     if (projectDir.isEmpty())
         return;
diff --git a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h
index ec27e1cd26450e953a99f01ebfd92cf3a63ae728..42a244e5d41c5a5969febc2a900a9a83ad4ff4ff 100644
--- a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h
+++ b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h
@@ -6,6 +6,7 @@
 #include <QSet>
 #include <qdeclarative.h>
 #include <QFileSystemWatcher>
+#include <QTimer>
 
 #include "qmlprojectitem.h"
 #include "filesystemwatcher.h"
@@ -49,6 +50,7 @@ signals:
 
 private slots:
     void updateFileList();
+    void updateFileListNow();
 
 private:
     QString absolutePath(const QString &path) const;
@@ -74,6 +76,7 @@ private:
 
     QSet<QString> m_files;
     FileSystemWatcher m_dirWatcher;
+    QTimer m_updateFileListTimer;
 
 
     friend class ProjectItem;