下面的
问题原因Get了 如果既是
QObject派生类,又用Q_DECLARE_INTERFACE声明为接口,用qobject_cast是会有问题的 ,用dynamic_cast 就不会有问题,如果非要用qobject_cast,则参考代码 
- #undef Q_DECLARE_INTERFACE 
 - #define Q_DECLARE_INTERFACE(IFace, IId) \
 -     template <> inline IFace *qobject_cast<IFace *>(QObject *object) \
 -     {IFace * face = reinterpret_cast<IFace *>((object ? object->qt_metacast(IId) : 0)); \
 -     return face ? face : static_cast<IFace*>(reinterpret_cast<IFace*>(object)->staticMetaObject.cast(object));}
 
参考自 
https://www.it610.com/article/4104865.htm
  图中DrawToolInterface是基类,而且声明了接口类型,所以会有以上问题。