Можно ли применить define что бы изменить реализацию функции, или как лучше это сделать?
Не программирую на C++, не использую Qt, но похоже ваш moc — это отдельный тул, который участвует в процессе сборки. Нет никаких проблем после него запустить программу на любом ЯП, которая выполнит чуть более умный препроцессинг, найдя в файле позицию ClassA::qt_metacall и затем заменит первое вхождение QObject::qt_metacall на InterfaceA::qt_metacall.
Блин, за базар не ответил - в Qt Мета система продумана очень здорово!
Прошло правда 3 дня прежде чем разобрался, зато теперь ничего переопределять не нужно, как и возиться с define. 
Стоило поглубже копнуть qmetatype.h вместе с отладчиком и понять каждый шаг, всё встало на свои места.