0

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

现在我想读取父类中的所有属性,但我只能读取父属性。如何获取子类的属性?有没有舒适的方法?

4

1 回答 1

0

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

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

void ParentClass::needToGoDeeper() {
  ChildClass* obj = qobject_cast<ChildClass*>(this);
  if (obj) {
    int count = obj->metaObject()->propertyCount();
    //...
  }
}
于 2013-06-08T19:28:54.750 回答