Можно также явно определить конструктор копирования DataSignal, не вызывающий копирование QObject - это даст возможность создавать объекты в стеке. Но обратите внимание, что такой объект должен создаваться без владельца (параметр QObject *parent в конструкторе DataSignal), т. к. владелец считает, что дочерний объект находится в куче и пытается удалить его в своём деструкторе.