You know this already but this code needs some love :). 

For example, as written you can't turn a sampler into a slave (which is definitely something people will want to do). 

Inside EngineSync, EngineSync should create a little helper QObject class which wraps the sync controls for the deck and makes appropriate calls to EngineSync (see CueControl / HotcueControl for an example, except don't link EngineSync and the helper class with signals/slots like CueControl/HotcueControl are).