diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py
index 0334fb4b338e51a1db78abd6fbe379f694a56cd8..39a80c5f6e850005b349417310f39d970660039a 100644
--- a/share/qtcreator/gdbmacros/dumper.py
+++ b/share/qtcreator/gdbmacros/dumper.py
@@ -1351,20 +1351,6 @@ class Dumper:
                 type = value.type
 
         typedefStrippedType = stripTypedefs(type)
-        nsStrippedType = self.stripNamespaceFromType(typedefStrippedType)\
-            .replace("::", "__")
-
-        # Is this derived from QObject?
-        hasMetaObject = False
-        try:
-            if value.type.code != gdb.TYPE_CODE_PTR:
-                mo = item.value['staticMetaObject']
-                hasMetaObject = True
-        except:
-            pass
-
-        #warn(" STRIPPED: %s" % nsStrippedType)
-        #warn(" DUMPERS: %s" % (nsStrippedType in qqDumpers))
 
         if isSimpleType(typedefStrippedType):
             #warn("IS SIMPLE: %s " % type)
@@ -1372,8 +1358,22 @@ class Dumper:
             self.putType(item.value.type)
             self.putValue(value)
             self.putNumChild(0)
+            return
+
+        # Is this derived from QObject?
+        hasMetaObject = False
+        for field in typedefStrippedType.strip_typedefs().fields():
+            if field.name == "staticMetaObject":
+                hasMetaObject = True
+                break
+
+        nsStrippedType = self.stripNamespaceFromType(typedefStrippedType)\
+            .replace("::", "__")
+
+        #warn(" STRIPPED: %s" % nsStrippedType)
+        #warn(" DUMPERS: %s" % (nsStrippedType in qqDumpers))
 
-        elif self.useFancy \
+        if self.useFancy \
                 and ((format is None) or (format >= 1)) \
                 and ((nsStrippedType in qqDumpers) or hasMetaObject):
             #warn("IS DUMPABLE: %s " % type)