父类如何看到其子类的属性?



我在Qt上做了一些实验,我试着在父类中读取子类的Q_PROPERTY注释的所有属性。我的类是这样的:

class ParentClass : public QObject
{
    Q_OBJECT
    Q_PROPERTY(ParentProperty...)
    //class stuff...
}
class ChildClass : public ParentClass
{
    Q_OBJECT
    Q_PROPERTY(ChildProperty...)
    //class stuff
}

现在我想读取父类中的所有属性,但我只能读取父属性。如何获得子类的属性?有什么舒服的方法吗?

一般不应该在父类中引用任何子类。它打破了类继承的思想。

如果你确定你需要这样做,你应该将对象指针转换为ChildClass*类型,然后使用它的属性。

void ParentClass::needToGoDeeper() {
  ChildClass* obj = qobject_cast<ChildClass*>(this);
  if (obj) {
    int count = obj->metaObject()->propertyCount();
    //...
  }
}

最新更新