diff --git a/src/qdoc/cmake/QDocConfiguration.cmake b/src/qdoc/cmake/QDocConfiguration.cmake
index 72d27db9e..8a3cba463 100644
--- a/src/qdoc/cmake/QDocConfiguration.cmake
+++ b/src/qdoc/cmake/QDocConfiguration.cmake
@@ -8,7 +8,7 @@ set(QDOC_MINIMUM_CLANG_VERSION "17")

 # List of explicitly supported Clang versions for QDoc
 set(QDOC_SUPPORTED_CLANG_VERSIONS
-    "21.1" "20.1" "19.1" "18.1" "17.0.6"
+    "23.1" "22.1" "22.0" "21.1" "20.1" "19.1" "18.1" "17.0.6"
 )

 # Check for QDoc coverage dependencies
diff --git a/src/qdoc/qdoc/CMakeLists.txt b/src/qdoc/qdoc/CMakeLists.txt
index 90f1d7c23..84ebc3a28 100644
--- a/src/qdoc/qdoc/CMakeLists.txt
+++ b/src/qdoc/qdoc/CMakeLists.txt
@@ -191,6 +191,7 @@ qt_internal_add_tool(${target_name}
     DEFINES
         # To provide the ability to workaround version-specific Clang issues.
         # A re-export of (LLVM|CLANG)_VERSION_MAJOR done in WrapLibClang.cmake
+        QT_NO_EMIT
         LIBCLANG_VERSION_MAJOR=${QT_LIB_CLANG_VERSION_MAJOR}
 )

diff --git a/src/qdoc/qdoc/src/qdoc/clangcodeparser.cpp b/src/qdoc/qdoc/src/qdoc/clangcodeparser.cpp
index 66a750a3d..3f54ddff5 100644
--- a/src/qdoc/qdoc/src/qdoc/clangcodeparser.cpp
+++ b/src/qdoc/qdoc/src/qdoc/clangcodeparser.cpp
@@ -43,7 +43,12 @@
 #include <clang/Lex/Lexer.h>
 #include <llvm/Support/Casting.h>

-#include "clang/AST/QualTypeNames.h"
+#if LIBCLANG_VERSION_MAJOR >= 22
+// LLVM 22 provides a compatible QualTypeNames implementation in libclang.
+#  include <clang/AST/QualTypeNames.h>
+#else
+#  include "clang/AST/QualTypeNames.h"
+#endif
 #include "template_declaration.h"

 #include <cstdio>
