当前位置:  开发笔记 > 编程语言 > 正文

Q_INTERFACES宏的目的是什么?

如何解决《Q_INTERFACES宏的目的是什么?》经验,为你挑选了1个好方法。

我正在阅读其他人的代码并看到这个:

class UAVItem:public QObject,public QGraphicsItem
{
    Q_OBJECT
    Q_INTERFACES(QGraphicsItem)
...

但我没有看到他们在这个程序中使用任何类型的插件.因此,我可以删除该行:

    Q_INTERFACES(QGraphicsItem)



1> Oktalist..:

如果你有一个类Derived从一个类继承Base,这反过来从继承QObject,都DerivedBase包含Q_OBJECT宏,则qobject_cast可以用来安全地从一个指针(或引用)投Base,一个指针(或引用)Derived,类似以dynamic_cast在标准C++但不RTTI.

如果Base确实没有继承QObject,则qobject_cast仍可以以这种方式使用,但只有Base具有相应的Q_DECLARE_INTERFACE宏观和Derived包含Q_INTERFACES(Base).

在你的情况,Q_INTERFACES(QGraphicsItem)在存在UAVItem该装置qobject_cast可被用于从一个指针(或参考)转换为QGraphicsItem一个指针(或引用)UAVItem,尽管QGraphicsItem未继承QObject.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有