Раскидал классы в отдельные cpp и h. Само заработало, так и не понял что ему нужно и почему он выделывается.
Потому что "просто так" moc генератор смотрит только .h файлы. А Q_OBJECT в cpp файлах не видит, moc файлы для них не создает, ну и, естественно, ошибки линковки. Обычно с этим сталкиваются через неск дней знакомства с Qt