diff --git a/src/libs/utils/projectintropage.cpp b/src/libs/utils/projectintropage.cpp
index 71963f97b53654b9cb20773707ec4a349447048a..e508268105f923cc391ebdb582613e2fae2d84d2 100644
--- a/src/libs/utils/projectintropage.cpp
+++ b/src/libs/utils/projectintropage.cpp
@@ -179,10 +179,8 @@ bool ProjectIntroPage::validate()
     }
 
     // Check existence of the directory
-    QString projectDir = path();
-    projectDir += QDir::separator();
-    projectDir += d->m_ui.nameLineEdit->text();
-    const QFileInfo projectDirFile(projectDir);
+    const QFileInfo projectDirFile(path() + QLatin1Char('/')
+                                   + QDir::fromNativeSeparators(d->m_ui.nameLineEdit->text()));
     if (!projectDirFile.exists()) { // All happy
         hideStatusLabel();
         return nameValid;
diff --git a/src/plugins/bazaar/bazaarclient.cpp b/src/plugins/bazaar/bazaarclient.cpp
index 0bde00f9e601f20b00dd722c1b8c427f2fa7d058..e9c1bfbdc4676a3e4b51cc13e240b49174741a83 100644
--- a/src/plugins/bazaar/bazaarclient.cpp
+++ b/src/plugins/bazaar/bazaarclient.cpp
@@ -140,7 +140,7 @@ bool BazaarClient::synchronousSetUserId()
 
 BranchInfo BazaarClient::synchronousBranchQuery(const QString &repositoryRoot) const
 {
-    QFile branchConfFile(repositoryRoot + QDir::separator() +
+    QFile branchConfFile(repositoryRoot + QLatin1Char('/') +
                          QLatin1String(Constants::BAZAARREPO) +
                          QLatin1String("/branch/branch.conf"));
     if (!branchConfFile.open(QIODevice::ReadOnly))
diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp
index 51445d176da1cccc7097f1af376ddc934077ba61..4e6d1624786e5ca19af37c9cd85dccc1aaf2cbe7 100644
--- a/src/plugins/coreplugin/documentmanager.cpp
+++ b/src/plugins/coreplugin/documentmanager.cpp
@@ -746,7 +746,7 @@ QString DocumentManager::getSaveAsFileName(const IDocument *document, const QStr
     }
 
     absoluteFilePath = getSaveFileName(tr("Save File As"),
-        path + QDir::separator() + fileName,
+        path + QLatin1Char('/') + fileName,
         filterString,
         selectedFilter);
     return absoluteFilePath;
diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp
index e94a6bce24bcfd620f3011cecc88d0640adf2a92..a0f4b17d019274bdc3fc1c8138e3df164efaa70c 100644
--- a/src/plugins/cpaster/cpasterplugin.cpp
+++ b/src/plugins/cpaster/cpasterplugin.cpp
@@ -347,8 +347,9 @@ static inline QString tempFilePattern(const QString &prefix, const QString &exte
 {
     // Get directory
     QString pattern = QDir::tempPath();
-    if (!pattern.endsWith(QDir::separator()))
-        pattern.append(QDir::separator());
+    const QChar slash = QLatin1Char('/');
+    if (!pattern.endsWith(slash))
+        pattern.append(slash);
     // Prefix, placeholder, extension
     pattern += prefix;
     pattern += QLatin1String("_XXXXXX.");
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index 961be4401be11d8142920a01c8c3a9f45e0cf376..3902d1428486bd58b8ecd4993653967ee916cd67 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -284,10 +284,8 @@ void MercurialClient::incoming(const QString &repositoryRoot, const QString &rep
         args.append(repository);
 
     QString id = repositoryRoot;
-    if (!repository.isEmpty()) {
-        id += QDir::separator();
-        id += repository;
-    }
+    if (!repository.isEmpty())
+        id += QLatin1Char('/') + repository;
 
     const QString title = tr("Hg incoming %1").arg(id);
 
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index 4ea40451302d11cae4816d203b4b93f5bca31b21..0d0dc65c1dc47d4563760b18cbeff4b910d8fc36 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -962,8 +962,9 @@ PerforcePlugin::createTemporaryArgumentFile(const QStringList &extraArgs,
     QString pattern = m_instance->m_tempFilePattern;
     if (pattern.isEmpty()) {
         pattern = QDir::tempPath();
-        if (!pattern.endsWith(QDir::separator()))
-            pattern += QDir::separator();
+        const QChar slash = QLatin1Char('/');
+        if (!pattern.endsWith(slash))
+            pattern += slash;
         pattern += QLatin1String("qtc_p4_XXXXXX.args");
         m_instance->m_tempFilePattern = pattern;
     }
diff --git a/src/plugins/qmljseditor/qmljscompletionassist.cpp b/src/plugins/qmljseditor/qmljscompletionassist.cpp
index 349921e8468c3a193c2065b4b0bb1db153aabe62..bd0dbf6e82a25944a82fb57721d465f07a586004 100644
--- a/src/plugins/qmljseditor/qmljscompletionassist.cpp
+++ b/src/plugins/qmljseditor/qmljscompletionassist.cpp
@@ -914,13 +914,10 @@ bool QmlJSCompletionAssistProcessor::completeFileName(const QString &relativeBas
 {
     const QFileInfo fileInfo(fileName);
     QString directoryPrefix;
-    if (fileInfo.isRelative()) {
-        directoryPrefix = relativeBasePath;
-        directoryPrefix += QDir::separator();
-        directoryPrefix += fileInfo.path();
-    } else {
+    if (fileInfo.isRelative())
+        directoryPrefix = relativeBasePath + QLatin1Char('/') + fileInfo.path();
+    else
         directoryPrefix = fileInfo.path();
-    }
     if (!QFileInfo::exists(directoryPrefix))
         return false;
 
diff --git a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
index cd0e63f6d625a00def6d3d7d9e8c71b144cd7f9b..4b1cc82f05ad7ce4cc898df0bf11b8977f541124 100644
--- a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
+++ b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
@@ -106,7 +106,7 @@ public:
         if (componentName.isEmpty() || path.isEmpty())
             return;
 
-        const QString newFileName = path + QDir::separator() + componentName
+        const QString newFileName = path + QLatin1Char('/') + componentName
                 + QLatin1String(".qml");
 
         QString imports;
diff --git a/src/plugins/qnx/qnxutils.cpp b/src/plugins/qnx/qnxutils.cpp
index 3596880319a7aeed5914ba0d7550b761b6c6b321..8aa5f5c5b7cbd8afcca2fea432793bc8e0168500 100644
--- a/src/plugins/qnx/qnxutils.cpp
+++ b/src/plugins/qnx/qnxutils.cpp
@@ -100,7 +100,7 @@ QList<Utils::EnvironmentItem> QnxUtils::qnxEnvironmentFromEnvFile(const QString
 
     // locking creating bbndk-env file wrapper script
     QTemporaryFile tmpFile(
-            QDir::tempPath() + QDir::separator()
+            QDir::tempPath() + QLatin1Char('/')
             + QLatin1String("bbndk-env-eval-XXXXXX") + QLatin1String(isWindows ? ".bat" : ".sh"));
     if (!tmpFile.open())
         return items;
diff --git a/src/plugins/resourceeditor/qrceditor/qrceditor.cpp b/src/plugins/resourceeditor/qrceditor/qrceditor.cpp
index 4afdf830cbb290b45ec2b5d826fa9a698152e91c..045c1dd0418651d259fbfe6432bd7835a19f4690 100644
--- a/src/plugins/resourceeditor/qrceditor/qrceditor.cpp
+++ b/src/plugins/resourceeditor/qrceditor/qrceditor.cpp
@@ -313,7 +313,7 @@ void QrcEditor::resolveLocationIssues(QStringList &files)
             if (clickedButton == context.copyButton) {
                 const QFileInfo fi(file);
                 QFileInfo suggestion;
-                QDir tmpTarget(dir.path() + QDir::separator() + QLatin1String("Resources"));
+                QDir tmpTarget(dir.path() + QLatin1Char('/') + QLatin1String("Resources"));
                 if (tmpTarget.exists())
                     suggestion.setFile(tmpTarget, fi.fileName());
                 else
diff --git a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
index 3df53d09a3415b20abb57066b8080f4c9e2ddceb..3ba96a466c23b7ac36c9616706b4a5c635ae3856 100644
--- a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
+++ b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
@@ -204,7 +204,7 @@ QString ResourceFile::contents() const
             const File &file = *f;
             QDomElement felt = doc.createElement(QLatin1String("file"));
             relt.appendChild(felt);
-            const QString conv_file = relativePath(file.name).replace(QDir::separator(), QLatin1Char('/'));
+            const QString conv_file = QDir::fromNativeSeparators(relativePath(file.name));
             const QDomText text = doc.createTextNode(conv_file);
             felt.appendChild(text);
             if (!file.alias.isEmpty())
@@ -428,7 +428,7 @@ QString ResourceFile::absolutePath(const QString &rel_path) const
         return rel_path;
 
     QString rc = QFileInfo(m_file_name).path();
-    rc +=  QDir::separator();
+    rc +=  QLatin1Char('/');
     rc += rel_path;
     return QDir::cleanPath(rc);
 }
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index dfa299fd0174a1e10621573c2f1ed190626e063e..f1a9abb524a9190be5bb5a4ababd554bf787cba6 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -674,8 +674,9 @@ bool VcsBaseSubmitEditor::runSubmitMessageCheckScript(const QString &checkScript
 {
     // Write out message
     QString tempFilePattern = QDir::tempPath();
-    if (!tempFilePattern.endsWith(QDir::separator()))
-        tempFilePattern += QDir::separator();
+    const QChar slash = QLatin1Char('/');
+    if (!tempFilePattern.endsWith(slash))
+        tempFilePattern += slash;
     tempFilePattern += QLatin1String("msgXXXXXX.txt");
     TempFileSaver saver(tempFilePattern);
     saver.write(fileContents());