查看完整版本: [-- qobject_cast转换为基类类型闹鬼事件,为什么会返回Null呢? --]

QTCN开发网 -> Qt基础编程 -> qobject_cast转换为基类类型闹鬼事件,为什么会返回Null呢? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

shixingya 2020-01-09 18:32

qobject_cast转换为基类类型闹鬼事件,为什么会返回Null呢?


下面的问题原因Get了 如果既是QObject派生类,又用Q_DECLARE_INTERFACE声明为接口,用qobject_cast是会有问题的 ,用dynamic_cast 就不会有问题,如果非要用qobject_cast,则参考代码
  1. #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
[attachment=21240]


图中DrawToolInterface是基类,而且声明了接口类型,所以会有以上问题。

shixingya 2020-01-09 19:06
https://blog.csdn.net/iteye_6429/article/details/82103431  


查看完整版本: [-- qobject_cast转换为基类类型闹鬼事件,为什么会返回Null呢? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled