Правильно сказал @liaK (вкратце: вы всегда должны использовать макрос Q_OBJECT в любом классе, который происходит из QObject).
Одна вещь, которую я не видел, - это то, что если вы не явно помещает макрос Q_OBJECT, а затем иногда очень удобно qobject_cast не будет работать !!!