Matt Phillips had skipped into the box before his shot took a deflection and settled in the far corner of the net to give QPR the lead.
Centre-half Robinson quickly equalised for City though after heading in a Demarai Gray free kick, before Caddis converted a second-half penalty after Nedum Onuoha pushed over Clayton Donaldson in the box.
© Getty Images
QPR kept up the pressure in the second half but the Birmingham defence of Robinson and Michael Morrison held strong.
Birmingham now lie in fourth place in the league, with Rangers dropping down to 12th.