Probably because QPushButton is implemented in two parts, with an outer "public" class and an inner "private" one. Lots of Qt classes have this two-part implementation, for "security" reasons, to make it easier for object data to be shared, and to make object assignment simpler and lighter-weight.

However, the behavior you've discovered is probably technically a bug.