我在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();
//...
}
}