Q_OBJECT в B классе?
Весь код сейчас лежит в main.cpp
class A: public QObject {};
class B: public A {Q_OBJECT}; //... ошибка: undefined reference to `vtable for B'
class A: public QObject {Q_OBJECT};//...ошибка: undefined reference to `vtable for A'
class B: public A {Q_OBJECT};//...ошибка: undefined reference to `vtable for B'
Сам часто пользовался qobject_cast, но они всегда были прямыми наследниками от QWidget/QObject