В коде есть нарушение двух правил наследования от QObject:
1) Макрос Q_OBJECT надо писать всегда. Допускается использование без него, но это только если вы в этом уверенны на 100% и понимаете, как это работает. В официальной доке по Qt настоятельно рекомендуется писать этот макрос всегда, когда наследуете QObject.
2) Конструктор наследника QObject должен иметь вид:
explicit MyObject(..., QObject* parent=0);
Это требуется для реализации объектных иерархий.
Кроме того, в конструкторах ваших классов нет вызова конструктора предка, т.е QObject(parent).
Не уверен, что что-то из этого приводит к вашей ошибке, однако так, как написано у вас, писать точно не стоит.
Кстати, бывает, что возникают проблемы, когда класс, который не был наследником QObject в процессе разработки им становится. QtCreator не всегда соображает правильно и не запускает qmake после этих исправлений. Попробуйте запустить qmake руками и потом пересобрать проект.