diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py
index d90429538f504cc0c0a58eda8300b27840d4b816..bcb41a7e7f567370cff332bdd3113faf078b924e 100644
--- a/share/qtcreator/dumper/dumper.py
+++ b/share/qtcreator/dumper/dumper.py
@@ -1475,10 +1475,6 @@ class Dumper:
             self.putBetterType(typeName)
             return
 
-        format = self.formats.get(self.currentIName)
-        if format is None:
-            format = self.typeformats.get(stripClassTag(typeName))
-
         if type.code == ArrayCode:
             targettype = type.target()
             self.putAddress(value.address)
@@ -1533,6 +1529,9 @@ class Dumper:
 
             innerType = type.target()
             innerTypeName = str(innerType.unqualified())
+            format = self.formats.get(self.currentIName)
+            if format is None:
+                format = self.typeformats.get(stripForFormat(str(type)))
 
             if innerType.code == VoidCode:
                 #warn("VOID POINTER: %s" % format)
@@ -1664,6 +1663,10 @@ class Dumper:
         else:
             dtypeName = typeName
 
+        format = self.formats.get(self.currentIName)
+        if format is None:
+            format = self.typeformats.get(stripForFormat(dtypeName))
+
         if self.useFancy and (format is None or format >= 1):
             self.putAddress(value.address)
             self.putType(dtypeName)