diff --git a/src/plugins/qt4projectmanager/qtoutputformatter.cpp b/src/plugins/qt4projectmanager/qtoutputformatter.cpp
index 5f53407bf8b45ce4241e169df70f10e09f03bc74..ae2ecb1fabd76414de8c1d1a9731a4b70e23e568 100644
--- a/src/plugins/qt4projectmanager/qtoutputformatter.cpp
+++ b/src/plugins/qt4projectmanager/qtoutputformatter.cpp
@@ -33,6 +33,7 @@
 #include <qt4projectmanager/qt4project.h>
 
 #include <QtCore/QFileInfo>
+#include <QtCore/QUrl>
 #include <QtGui/QPlainTextEdit>
 
 using namespace ProjectExplorer;
@@ -40,7 +41,7 @@ using namespace Qt4ProjectManager;
 
 QtOutputFormatter::QtOutputFormatter(Qt4Project *project)
     : OutputFormatter()
-    , m_qmlError(QLatin1String("(file:///[^:]+:\\d+:\\d+):"))
+    , m_qmlError(QLatin1String("(file:///.+:\\d+:\\d+):"))
     , m_qtError(QLatin1String("Object::.*in (.*:\\d+)"))
     , m_project(project)
 
@@ -149,10 +150,10 @@ void QtOutputFormatter::appendLine(LinkResult lr, const QString &line, bool onSt
 void QtOutputFormatter::handleLink(const QString &href)
 {
     if (!href.isEmpty()) {
-        QRegExp qmlErrorLink(QLatin1String("^file://(/[^:]+):(\\d+):(\\d+)"));
+        const QRegExp qmlErrorLink(QLatin1String("^(file:///.+):(\\d+):(\\d+)"));
 
         if (qmlErrorLink.indexIn(href) != -1) {
-            const QString fileName = qmlErrorLink.cap(1);
+            const QString fileName = QUrl(qmlErrorLink.cap(1)).toLocalFile();
             const int line = qmlErrorLink.cap(2).toInt();
             const int column = qmlErrorLink.cap(3).toInt();
             TextEditor::BaseTextEditor::openEditorAt(fileName, line, column - 1);