diff --git a/kde-modules/KDECompilerSettings.cmake b/kde-modules/KDECompilerSettings.cmake
index c42fd55..6e5193e 100644
--- a/kde-modules/KDECompilerSettings.cmake
+++ b/kde-modules/KDECompilerSettings.cmake
@@ -295,9 +295,9 @@ endif()
 if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -DQT_NO_EXCEPTIONS")
 elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND NOT WIN32)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -DQT_NO_EXCEPTIONS")
 #elseif (MSVC OR (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Intel"))
     # Exceptions appear to be disabled by default for MSVC
     # http://msdn.microsoft.com/en-us/library/1deeycx5.aspx
@@ -315,9 +315,13 @@ macro(_kdecompilersettings_append_exception_flag VAR)
             set(${VAR} "${${VAR}} -fexceptions")
         endif()
     elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-        set(${VAR} "${${VAR}} -fexceptions")
+        string(REPLACE " -DQT_NO_EXCEPTIONS " " " ${VAR} " ${${VAR}} ")
+        # it's likely that -DQT_NO_EXCEPTIONS from CMAKE_CXX_FLAGS never made it to the COMPILE_OPTIONS
+        # so we override/undo that global setting for this file
+        set(${VAR} "${${VAR}} -fexceptions -UQT_NO_EXCEPTIONS")
     elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-        set(${VAR} "${${VAR}} -fexceptions")
+        string(REPLACE " -DQT_NO_EXCEPTIONS " " " ${VAR} " ${${VAR}} ")
+        set(${VAR} "${${VAR}} -fexceptions -UQT_NO_EXCEPTIONS")
     endif()
     string(STRIP "${${VAR}}" ${VAR})
 endmacro()
@@ -342,10 +346,10 @@ function(KDE_TARGET_ENABLE_EXCEPTIONS target mode)
     if (WIN32)
         target_compile_options(${target} ${mode} "$<$<CXX_COMPILER_ID:Intel>:-EHsc>")
     else()
-        target_compile_options(${target} ${mode} "$<$<CXX_COMPILER_ID:Intel>:-fexceptions>")
+        target_compile_options(${target} ${mode} "$<$<CXX_COMPILER_ID:Intel>:-fexceptions;-UQT_NO_EXCEPTIONS>")
     endif()
     target_compile_options(${target} ${mode}
-        "$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-fexceptions>")
+        "$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-fexceptions;-UQT_NO_EXCEPTIONS>")
 endfunction()
 
 function(KDE_ENABLE_EXCEPTIONS)
