Каждый класс, работающий через метаобъектную систему, обязан содержать макрос Q_OBJECT.
Ну почему же, есть исключения) Производный класс использующий слоты базового класса сей макрос иметь не обязан.
Не будем путать топикстартера
А так, да, в документации и написано
The Q_OBJECT macro must appear in the private section of a class definition that declares its own signals and slots or that uses other services provided by Qt's meta-object system.
Имхо, стоит указывать в любом случае при наследовании от QObject. И в качестве хорошего тона, и в качестве явного указания на принадлежность объекта к QObject