If other components really are relying on the propertiesReady() signal being emitted then it should be happening in the constructor. No need to wait 500 ms either, a 0 ms timer should suffice.

The problem with emitting it here is that, in the case of changing paths, the properties are not actually ready at this point. They will be ready once getPropertiesFinished() is called which already emits propertiesReady().