Now having too many profiles will skip getting initial values, but handleProfileChanged() compares values based on names, randomly then triggering change signals. I'd suggest to either clear d->names (so profile change stops triggering changes), or filling profile information as much as fits.