Fragile as in this might work now but I can see how slight changes in behaviour in other components could invalidate the assumption that a new service (and only a new service) has greater than 20 property changes in a single update.

The copy is cheap, it would be copying an implicitly shared QList of pointers. Ditto for the comparison, comparing NetworkService pointers.