I hope this does not trigger an endless loop of changes...
You can always check to see if the sender() is yourself or if the new position is the same as the old position. If either one is true, you do nothing and the loop stops. I don't remember if setPos() results in a signal or not.