Since your C has a semi-transparent background, the parent has to be painted first prior to painting the child. In some cases Qt will take the background from its backing store, in some it will call the paint event of the parent. If you optimize the paint event of the parent and only paint the part which is requested, the overhead should be small.