diff --git a/src/plugins/cpptools/cppquickopenfilter.cpp b/src/plugins/cpptools/cppquickopenfilter.cpp
index a1f1a9b3713e00c76a967d2922dad17875c48034..ac69c9cc6df9119aff415aed84a08e8de54c9ade 100644
--- a/src/plugins/cpptools/cppquickopenfilter.cpp
+++ b/src/plugins/cpptools/cppquickopenfilter.cpp
@@ -75,6 +75,12 @@ void CppQuickOpenFilter::refresh(QFutureInterface<void> &future)
     Q_UNUSED(future);
 }
 
+static bool compareLexigraphically(const QuickOpen::FilterEntry &a,
+                                   const QuickOpen::FilterEntry &b)
+{
+    return a.displayName < b.displayName;
+}
+
 QList<QuickOpen::FilterEntry> CppQuickOpenFilter::matchesFor(const QString &origEntry)
 {
     QString entry = trimWildcards(origEntry);
@@ -109,6 +115,9 @@ QList<QuickOpen::FilterEntry> CppQuickOpenFilter::matchesFor(const QString &orig
         }
     }
 
+    if (entries.size() < 1000)
+        qSort(entries.begin(), entries.end(), compareLexigraphically);
+
     return entries;
 }