diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index 9db7a03b4a453c35fe8a1542490327948a14ac76..62ff1b721bcce5652ca4f1bb6104fd7b8ebdaeff 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -690,6 +690,23 @@ void Qt4PriFileNode::changeFiles(const FileType fileType,
     if (!saveModifiedEditors())
         return;
 
+    // Ensure that the file is not read only
+    QFileInfo fi(m_projectFilePath);
+    if (!fi.isWritable()) {
+        // Try via vcs manager
+        Core::VCSManager *vcsManager = Core::ICore::instance()->vcsManager();
+        Core::IVersionControl *versionControl = vcsManager->findVersionControlForDirectory(fi.absolutePath());
+        if (!versionControl || versionControl->vcsOpen(m_projectFilePath)) {
+            bool makeWritable = QFile::setPermissions(m_projectFilePath, fi.permissions() | QFile::WriteUser);
+            if (!makeWritable) {
+                QMessageBox::warning(Core::ICore::instance()->mainWindow(),
+                                     tr("Failed!"),
+                                     tr("Could not write project file %1.").arg(m_projectFilePath));
+                return;
+            }
+        }
+    }
+
     QStringList lines;
     ProFile *includeFile;
     {