diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py
index 9795251c9ed8e34e23e61c1ae6552df827a0f1e4..4ff2a80639695d6fceb30fb254e1b7a5180c5800 100644
--- a/share/qtcreator/gdbmacros/gdbmacros.py
+++ b/share/qtcreator/gdbmacros/gdbmacros.py
@@ -1378,11 +1378,17 @@ def qdump__QRectF(d, item):
 
 
 def qdump__QRegion(d, item):
-    d.putValue(" ")
-    d.putNumChild(1)
-    if d.isExpanded(item):
-        with Children(d):
-            d.putCallItem("rects", item, "rects()")
+    p = item.value["d"].dereference()["qt_rgn"]
+    if isNull(p):
+        d.putValue("<empty>")
+        d.putNumChild(0)
+    else:
+        n = str(p.dereference()["numRects"])
+        d.putItemCount(n)
+        d.putNumChild(n)
+        if d.isExpanded(item):
+            with Children(d):
+                d.putFields(Item(p.dereference(), item.iname))
 
 # qt_rgn might be 0
 # gdb.parse_and_eval("region")["d"].dereference()["qt_rgn"].dereference()
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index b71114418eca50f7a6967ac7b289771bc43efc27..3842c31d464ce8c85b6bd3ffa2e10c1ad0fa9b79 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -810,6 +810,9 @@ void testQRegion()
     region += QRect(100, 100, 200, 200);
     region += QRect(300, 300, 400, 500);
     region += QRect(500, 500, 600, 600);
+    region += QRect(500, 500, 600, 600);
+    region += QRect(500, 500, 600, 600);
+    region += QRect(500, 500, 600, 600);
 }