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

时间:2013-06-08 13:50:52

标签: qt properties qobject

我正在对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
}

现在我想读取父类中的所有属性,但我只能读取父属性。我怎样才能获得子类的属性?有一种舒适的方式吗?

1 个答案:

答案 0 :(得分:0)

您通常不应该引用父类中的任何子类。它打破了类继承的想法。

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

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