diff --git a/examples/activeqt/webbrowser/main.cpp b/examples/activeqt/webbrowser/main.cpp
index cac25051c6a7f6056b6b5803f9ede727a1e6174b..869ddfccb5d81dc1c6b47759a3d161f7ead7bfd4 100644
--- a/examples/activeqt/webbrowser/main.cpp
+++ b/examples/activeqt/webbrowser/main.cpp
@@ -78,7 +78,7 @@ static QList<Location> defaultBookmarks()
 
 static bool containsAddress(const QList<Location> &locations, const QString &address)
 {
-    foreach (const Location &location, locations) {
+    for (const Location &location : locations) {
         if (location.address == address)
             return true;
     }
@@ -195,7 +195,7 @@ MainWindow::MainWindow()
     QList<Location> bookmarks = readBookMarks(settings);
     if (bookmarks.isEmpty() || restoredVersion.isEmpty())
         bookmarks = defaultBookmarks();
-    foreach (const Location &bookmark, bookmarks)
+    for (const Location &bookmark : qAsConst(bookmarks))
         addBookmark(bookmark);
 }
 
@@ -222,7 +222,7 @@ QAction *MainWindow::addLocation(const Location &location, QMenu *menu)
 QList<Location> MainWindow::bookmarks() const
 {
     QList<Location> result;
-    foreach (const QAction *action, bookmarkActions)
+    for (const QAction *action : qAsConst(bookmarkActions))
         result.append(locationFromAction(action));
     return result;
 }
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index f2deedb4a192c56a5f2f2bc0dad9c0396f469fd9..36bf4e65d4c449d4c654d3140b85a6fa866b3827 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -1000,7 +1000,7 @@ bool QAxBase::setControl(const QString &c)
                 if (search.isEmpty()) {
                     controls.beginGroup(QLatin1String("/CLSID"));
                     const QStringList clsids = controls.childGroups();
-                    foreach (const QString &clsid, clsids) {
+                    for (const QString &clsid : clsids) {
                         const QString name = controls.value(clsid + QLatin1String("/Default")).toString();
                         if (name == c) {
                             search = clsid;
@@ -1100,8 +1100,8 @@ void QAxBase::disableClassInfo()
 */
 void QAxBase::clear()
 {
-    foreach (QAxEventSink *eventSink, d->eventSink) {
-        if (eventSink) {
+    for (auto it = d->eventSink.cbegin(), end = d->eventSink.cend(); it != end; ++it) {
+        if (QAxEventSink *eventSink = it.value()) {
             eventSink->unadvise();
             eventSink->Release();
         }
@@ -2167,8 +2167,8 @@ void MetaObjectGenerator::readClassInfo()
         QString tlfile;
         if (!tlid.isEmpty()) {
             controls.beginGroup(QLatin1String("/Classes/TypeLib/") + tlid);
-            QStringList versions = controls.childGroups();
-            foreach (const QString &version, versions) {
+            const QStringList versions = controls.childGroups();
+            for (const QString &version : versions) {
                 tlfile = controls.value(QLatin1Char('/') + version + QLatin1String("/0/win32/.")).toString();
                 if (!tlfile.isEmpty())
                     break;
@@ -2928,7 +2928,7 @@ QMetaObject *MetaObjectGenerator::tryCache()
             IConnectionPointContainer *cpoints = 0;
             d->ptr->QueryInterface(IID_IConnectionPointContainer, reinterpret_cast<void **>(&cpoints));
             if (cpoints) {
-                foreach (const QUuid &iid, d->metaobj->connectionInterfaces) {
+                for (const QUuid &iid : qAsConst(d->metaobj->connectionInterfaces)) {
                     IConnectionPoint *cpoint = 0;
                     cpoints->FindConnectionPoint(iid, &cpoint);
                     if (cpoint) {
@@ -3151,8 +3151,8 @@ QMetaObject *MetaObjectGenerator::metaObject(const QMetaObject *parentObject, co
     if (!cacheKey.isEmpty()) {
         mo_cache.insert(cacheKey, d->metaobj);
         d->cachedMetaObject = true;
-         foreach (QAxEventSink *sink, d->eventSink) {
-            if (sink) {
+        for (auto it = d->eventSink.cbegin(), end = d->eventSink.cend(); it != end; ++it) {
+            if (QAxEventSink *sink = it.value()) {
                 QUuid ciid = sink->connectionInterface();
 
                 d->metaobj->connectionInterfaces.append(ciid);
diff --git a/src/activeqt/container/qaxscript.cpp b/src/activeqt/container/qaxscript.cpp
index 7c84e4b1cb35093f7221332c845ba56695f1f7fb..fef39faadf4cfedf59a994e463a3aa2d15b3533c 100644
--- a/src/activeqt/container/qaxscript.cpp
+++ b/src/activeqt/container/qaxscript.cpp
@@ -713,7 +713,7 @@ bool QAxScript::load(const QString &code, const QString &language)
         if (code.contains(QLatin1String("End Sub"), Qt::CaseInsensitive))
             lang = QLatin1String("VBScript");
 
-        foreach (const QAxEngineDescriptor &engine, engines) {
+        for (const QAxEngineDescriptor &engine : qAsConst(engines)) {
             if (!engine.code.isEmpty() && code.contains(engine.code)) {
                 lang = engine.name;
                 break;
@@ -939,8 +939,8 @@ QStringList QAxScriptManager::functions(QAxScript::FunctionFlags flags) const
 {
     QStringList functions;
     functions.reserve(d->scriptDict.size());
-    foreach (const QAxScript *script, d->scriptDict)
-        functions.append(script->functions(flags));
+    for (auto it = d->scriptDict.cbegin(), end = d->scriptDict.cend(); it != end; ++it)
+        functions.append(it.value()->functions(flags));
     return functions;
 }
 
@@ -1055,7 +1055,7 @@ QAxScript *QAxScriptManager::load(const QString &file, const QString &name)
     if (file.endsWith(QLatin1String(".js"))) {
         language = QLatin1String("JScript");
     } else {
-        foreach (const QAxEngineDescriptor &engine, engines) {
+        for (const QAxEngineDescriptor &engine : qAsConst(engines)) {
             if (!engine.extension.isEmpty() && file.endsWith(engine.extension)) {
                 language = engine.name;
                 break;
@@ -1178,7 +1178,7 @@ QString QAxScriptManager::scriptFileFilter()
     QString specialFiles = QLatin1String(";;VBScript Files (*.vbs *.dsm)"
         ";;JavaScript Files (*.js)");
 
-    foreach (const QAxEngineDescriptor &engine, engines) {
+    for (const QAxEngineDescriptor &engine : qAsConst(engines)) {
         if (!engine.extension.isEmpty()) {
             allFiles += QLatin1String(" *") + engine.extension;
             specialFiles += QLatin1String(";;") + engine.name
@@ -1214,18 +1214,18 @@ QAxScript *QAxScriptManager::scriptForFunction(const QString &function) const
 {
     // check full prototypes if included
     if (function.contains(QLatin1Char('('))) {
-        foreach (QAxScript *script, d->scriptDict) {
-            if (script->functions(QAxScript::FunctionSignatures).contains(function))
-                return script;
+        for (auto it = d->scriptDict.cbegin(), end = d->scriptDict.cend(); it != end; ++it) {
+            if (it.value()->functions(QAxScript::FunctionSignatures).contains(function))
+                return it.value();
         }
     }
 
     QString funcName = function;
     funcName.truncate(funcName.indexOf(QLatin1Char('(')));
     // second try, checking only names, not prototypes
-    foreach (QAxScript *script, d->scriptDict) {
-        if (script->functions(QAxScript::FunctionNames).contains(funcName))
-            return script;
+    for (auto it = d->scriptDict.cbegin(), end = d->scriptDict.cend(); it != end; ++it) {
+        if (it.value()->functions(QAxScript::FunctionNames).contains(funcName))
+            return it.value();
     }
 
     return 0;
diff --git a/src/activeqt/container/qaxselect.cpp b/src/activeqt/container/qaxselect.cpp
index 0fc7d62401651de687d27a9f343272855ef07ea1..073ad039facfedac1f703809a1e55377a6906231 100644
--- a/src/activeqt/container/qaxselect.cpp
+++ b/src/activeqt/container/qaxselect.cpp
@@ -203,7 +203,8 @@ public:
     {
         m_controls = readControls(L"CLSID", unsigned(QSysInfo::WordSize));
         if (QSysInfo::WordSize == 64) { // Append the 32bit controls as disabled items.
-            foreach (const Control &c, readControls(L"Wow6432Node\\CLSID", 32u)) {
+            const QList<Control> controls = readControls(L"Wow6432Node\\CLSID", 32u);
+            for (const Control &c : controls) {
                 if (std::find_if(m_controls.constBegin(), m_controls.constEnd(), FindByClsidPredicate(c.clsid)) == m_controls.constEnd())
                     m_controls.append(c);
             }
diff --git a/src/activeqt/control/qaxfactory.h b/src/activeqt/control/qaxfactory.h
index c7444d38be61e62d2b2e19076dd604f66770e755..2f7bed1853e0293d97e3dc38442357d59da09c16 100644
--- a/src/activeqt/control/qaxfactory.h
+++ b/src/activeqt/control/qaxfactory.h
@@ -251,7 +251,7 @@ private:
             factory = new QAxClass<Class>(typeLibID().toString(), appID().toString()); \
             qRegisterMetaType<Class*>(#Class"*"); \
             keys = factory->featureList(); \
-            Q_FOREACH (const QString &key, keys) { \
+            for (const QString &key : qAsConst(keys)) { \
                 factoryKeys += key; \
                 factories.insert(key, factory); \
                 creatable.insert(key, true); \
@@ -261,7 +261,7 @@ private:
             factory = new QAxClass<Class>(typeLibID().toString(), appID().toString()); \
             qRegisterMetaType<Class*>(#Class"*"); \
             keys = factory->featureList(); \
-            Q_FOREACH (const QString &key, keys) { \
+            for (const QString &key : qAsConst(keys)) { \
                 factoryKeys += key; \
                 factories.insert(key, factory); \
                 creatable.insert(key, false); \
diff --git a/src/activeqt/control/qaxserver.cpp b/src/activeqt/control/qaxserver.cpp
index b02c38bc4d95091bbca89a6095e79a5f934cfc34..97756c3eddb0ce8f1fe4ddd2ac3a5a1cd78492cb 100644
--- a/src/activeqt/control/qaxserver.cpp
+++ b/src/activeqt/control/qaxserver.cpp
@@ -262,8 +262,8 @@ HRESULT UpdateRegistry(BOOL bRegister)
             settings->setValue(QLatin1String("/AppID/") + module + QLatin1String(".EXE/AppID"), appId);
         }
 
-        QStringList keys = qAxFactory()->featureList();
-        foreach (const QString &classNameIn, keys) {
+        const QStringList keys = qAxFactory()->featureList();
+        for (const QString &classNameIn : keys) {
             QObject *object = qAxFactory()->createObject(classNameIn);
             const QMetaObject *mo = qAxFactory()->metaObject(classNameIn);
             const QString classId = qAxFactory()->classID(classNameIn).toString().toUpper();
@@ -368,8 +368,8 @@ HRESULT UpdateRegistry(BOOL bRegister)
             settings->remove(QLatin1String("/AppID/") + appId + QLatin1String("/."));
             settings->remove(QLatin1String("/AppID/") + module + QLatin1String(".EXE"));
         }
-        QStringList keys = qAxFactory()->featureList();
-        foreach (const QString &classNameIn, keys) {
+        const QStringList keys = qAxFactory()->featureList();
+        for (const QString &classNameIn : keys) {
             const QMetaObject *mo = qAxFactory()->metaObject(classNameIn);
             const QString classId = qAxFactory()->classID(classNameIn).toString().toUpper();
             const QString className = qax_clean_type(classNameIn, mo);
@@ -1160,7 +1160,7 @@ extern "C" HRESULT __stdcall DumpIDL(const QString &outfile, const QString &ver)
     out << "\timportlib(\"stdole32.tlb\");" << endl;
     out << "\timportlib(\"stdole2.tlb\");" << endl << endl;
 
-    QStringList keys = qAxFactory()->featureList();
+    const QStringList keys = qAxFactory()->featureList();
 
     out << "\t/************************************************************************" << endl;
     out << "\t** If this causes a compile error in MIDL you need to upgrade the" << endl;
@@ -1205,7 +1205,7 @@ extern "C" HRESULT __stdcall DumpIDL(const QString &outfile, const QString &ver)
     out << "\t/* Forward declaration of classes that might be used as parameters */" << endl << endl;
 
     int res = S_OK;
-    foreach (const QString &className, keys) {
+    for (const QString &className : keys) {
         const QMetaObject *mo = qAxFactory()->metaObject(className);
         // We have meta object information for this type. Forward declare it.
         if (mo) {
@@ -1222,7 +1222,7 @@ extern "C" HRESULT __stdcall DumpIDL(const QString &outfile, const QString &ver)
     }
     out << endl;
 
-    foreach (const QString &className, keys) {
+    for (const QString &className : keys) {
         const QMetaObject *mo = qAxFactory()->metaObject(className);
         // We have meta object information for this type. Define it.
         if (mo) {
@@ -1238,7 +1238,7 @@ extern "C" HRESULT __stdcall DumpIDL(const QString &outfile, const QString &ver)
     if (res != S_OK)
         goto ErrorInClass;
 
-    foreach (const QString &className, keys) {
+    for (const QString &className : keys) {
         QObject *o = qAxFactory()->createObject(className);
         if (!o)
             continue;
diff --git a/src/activeqt/control/qaxserverbase.cpp b/src/activeqt/control/qaxserverbase.cpp
index 61645fd0406bdaf88406cd9e6988cdc09876f5f0..7be78d2ea0799c75d33aeb963f5e8790410bcecc 100644
--- a/src/activeqt/control/qaxserverbase.cpp
+++ b/src/activeqt/control/qaxserverbase.cpp
@@ -637,7 +637,7 @@ public:
         connections = old.connections;
         that = old.that;
         iid = old.iid;
-        foreach (const CONNECTDATA &connection, connections)
+        for (const CONNECTDATA &connection : qAsConst(connections))
             connection.pUnk->AddRef();
     }
     virtual ~QAxConnection()
@@ -840,8 +840,8 @@ public:
         InitializeCriticalSection(&refCountSection);
 
         // COM only knows the CLSID, but QAxFactory is class name based...
-        QStringList keys = qAxFactory()->featureList();
-        foreach (const QString &key, keys) {
+        const QStringList keys = qAxFactory()->featureList();
+        for (const QString &key : keys) {
             if (qAxFactory()->classID(key) == clsid) {
                 className = key;
                 break;
@@ -1121,9 +1121,8 @@ QAxServerBase::~QAxServerBase()
 #endif
 
     revokeActiveObject();
-
-    foreach (IConnectionPoint *point, points) {
-        if (point)
+    for (auto it = points.cbegin(), end = points.cend(); it != end; ++it) {
+        if (IConnectionPoint *point = it.value())
             point->Release();
     }
     delete aggregatedObject;
@@ -1339,7 +1338,7 @@ bool QAxServerBase::internalCreate()
     if (isWidget) {
         qt.object->installEventFilter(this);
         const QWidgetList children = qt.object->findChildren<QWidget*>();
-        foreach (QWidget *child, children)
+        for (QWidget *child : children)
             child->installEventFilter(this);
     }
     return true;
diff --git a/src/activeqt/shared/qaxtypes.cpp b/src/activeqt/shared/qaxtypes.cpp
index df3b655e407650a811dd5589b90969f3f83ec8f0..99ab4c849795021fb58df4f218b6243a94c1c55d 100644
--- a/src/activeqt/shared/qaxtypes.cpp
+++ b/src/activeqt/shared/qaxtypes.cpp
@@ -1222,7 +1222,7 @@ QVariant VARIANTToQVariant(const VARIANT &arg, const QByteArray &typeName, uint
             bool allStrings = true;
             QStringList strings;
             const QVariantList list(var.toList());
-            foreach (const QVariant &variant, list) {
+            for (const QVariant &variant : list) {
                 if (variant.canConvert(QVariant::String))
                     strings << variant.toString();
                 else
diff --git a/src/activeqt/shared/qaxutils.cpp b/src/activeqt/shared/qaxutils.cpp
index 51c0a1bece16dde6afe2356c7dbfba4109fb7c54..fde7dc66d2dcd14c958956b236194a3c6455b46b 100644
--- a/src/activeqt/shared/qaxutils.cpp
+++ b/src/activeqt/shared/qaxutils.cpp
@@ -95,7 +95,8 @@ HRGN qaxHrgnFromQRegion(QRegion region, const QWindow *window)
         addRectToHrgn(hRegion, region.boundingRect());
         return hRegion;
     }
-    foreach (const QRect &rect, region.rects())
+    const QVector<QRect> &rects = region.rects();
+    for (const QRect &rect : rects)
         addRectToHrgn(hRegion, rect);
     return hRegion;
 }
diff --git a/tools/dumpcpp/main.cpp b/tools/dumpcpp/main.cpp
index 145f2489ffbe68fd0849b98b79f56fbedc52fe5c..97915c13302724526d8ad46ef7bf85c16d30c4bb 100644
--- a/tools/dumpcpp/main.cpp
+++ b/tools/dumpcpp/main.cpp
@@ -899,7 +899,8 @@ void generateClassImpl(QTextStream &out, const QMetaObject *mo, const QByteArray
 static void formatCommentBlockFooter(const QString &typeLibFile, QTextStream &str)
 {
     str << " generated by dumpcpp v" << QT_VERSION_STR << " using\n**";
-    foreach (const QString &arg, QCoreApplication::arguments())
+    const QStringList arguments = QCoreApplication::arguments();
+    for (const QString &arg : arguments)
         str << ' ' << arg;
     str << "\n** from the type library " << typeLibFile << "\n**\n"
         << "****************************************************************************/\n\n";
@@ -1128,7 +1129,7 @@ bool generateTypeLibrary(QString typeLibFile, QString outname,
                     declOut << '}' << endl << endl;
                 }
             }
-            foreach (const QByteArray &opaquePointerType, opaquePointerTypes)
+            for (const QByteArray &opaquePointerType : qAsConst(opaquePointerTypes))
                 declOut << "Q_DECLARE_OPAQUE_POINTER(" << opaquePointerType << "*)" << endl;
             declOut << endl;
         }
diff --git a/tools/testcon/ambientproperties.cpp b/tools/testcon/ambientproperties.cpp
index e69b3650f7574eb16f562d94b5522230420cdc88..ec1311db9e51185d2c17a57867e902ab3c739ec9 100644
--- a/tools/testcon/ambientproperties.cpp
+++ b/tools/testcon/ambientproperties.cpp
@@ -69,7 +69,8 @@ void AmbientProperties::on_buttonBackground_clicked()
     p.setColor(container->backgroundRole(), c);
     container->setPalette(p);
 
-    foreach (QWidget *widget, mdiAreaWidgets()) {
+    const QWidgetList widgets = mdiAreaWidgets();
+    for (QWidget *widget : widgets) {
         p = widget->palette();
         p.setColor(widget->backgroundRole(), c);
         widget->setPalette(p);
@@ -88,7 +89,8 @@ void AmbientProperties::on_buttonForeground_clicked()
     p.setColor(container->foregroundRole(), c);
     container->setPalette(p);
 
-    foreach (QWidget *widget, mdiAreaWidgets()) {
+    const QWidgetList widgets = mdiAreaWidgets();
+    for (QWidget *widget : widgets) {
         p = widget->palette();
         p.setColor(widget->foregroundRole(), c);
         widget->setPalette(p);
@@ -104,7 +106,8 @@ void AmbientProperties::on_buttonFont_clicked()
     fontSample->setFont( f );
     container->setFont( f );
 
-    foreach (QWidget *widget, mdiAreaWidgets())
+    const QWidgetList widgets = mdiAreaWidgets();
+    for (QWidget *widget : widgets)
         widget->setFont( f );
 }
 
@@ -117,9 +120,12 @@ void AmbientProperties::on_buttonEnabled_toggled(bool on)
 QWidgetList AmbientProperties::mdiAreaWidgets() const
 {
     QWidgetList result;
-    if (QMdiArea *mdiArea = qobject_cast<QMdiArea*>(container))
-        foreach (QMdiSubWindow *subWindow, mdiArea->subWindowList())
+
+    if (QMdiArea *mdiArea = qobject_cast<QMdiArea*>(container)) {
+        const QList<QMdiSubWindow *> mdiSubWindows = mdiArea->subWindowList();
+        for (const QMdiSubWindow *subWindow : mdiSubWindows)
             result.push_back(subWindow->widget());
+    }
     return result;
 }
 
diff --git a/tools/testcon/main.cpp b/tools/testcon/main.cpp
index cce315cb9470926ec190f290166096be0a2512dc..24540844a6ebab216821d38a4240b428d72612a9 100644
--- a/tools/testcon/main.cpp
+++ b/tools/testcon/main.cpp
@@ -95,7 +95,8 @@ int main( int argc, char **argv )
         qInstallMessageHandler(redirectDebugOutput);
 
     MainWindow mw;
-    foreach (const QString &a, parser.positionalArguments()) {
+    const QStringList positionalArguments = parser.positionalArguments();
+    for (const QString &a : positionalArguments) {
         if (a.startsWith(QLatin1Char('{')) && a.endsWith(QLatin1Char('}')))
             mw.addControlFromClsid(a);
         else
diff --git a/tools/testcon/mainwindow.cpp b/tools/testcon/mainwindow.cpp
index bc692641ad3299b566fd8ed06319be49bfc6b37a..ca47cec88633954cf7b5a03388eddb3b1516b1a6 100644
--- a/tools/testcon/mainwindow.cpp
+++ b/tools/testcon/mainwindow.cpp
@@ -109,7 +109,8 @@ QAxWidget *MainWindow::activeAxWidget() const
 QList<QAxWidget *> MainWindow::axWidgets() const
 {
     QList<QAxWidget *> result;
-    foreach (const QMdiSubWindow *subWindow, m_mdiArea->subWindowList())
+    const QList<QMdiSubWindow *> mdiSubWindows = m_mdiArea->subWindowList();
+    for (const QMdiSubWindow *subWindow : mdiSubWindows)
         if (QAxWidget *axWidget = qobject_cast<QAxWidget *>(subWindow->widget()))
             result.push_back(axWidget);
     return result;
@@ -395,7 +396,8 @@ bool MainWindow::loadScript(const QString &file)
         m_scripts->addObject(this);
     }
 
-    foreach (QAxWidget *axWidget, axWidgets()) {
+    const QList<QAxWidget *> axw = axWidgets();
+    for (QAxWidget *axWidget : axw) {
         QAxBase *ax = axWidget;
         m_scripts->addObject(ax);
     }
@@ -434,7 +436,8 @@ void MainWindow::updateGUI()
     if (m_dlgProperties)
         m_dlgProperties->setControl(hasControl ? container : 0);
 
-    foreach (QAxWidget *container, axWidgets()) {
+    const QList<QAxWidget *> axw = axWidgets();
+    for (QAxWidget *container : axw) {
         container->disconnect(SIGNAL(signal(QString,int,void*)));
         if (actionLogSignals->isChecked())
             connect(container, SIGNAL(signal(QString,int,void*)), this, SLOT(logSignal(QString,int,void*)));