我正在对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
}
现在我想读取父类中的所有属性,但我只能读取父属性。我怎样才能获得子类的属性?有一种舒适的方式吗?
答案 0 :(得分:0)
您通常不应该引用父类中的任何子类。它打破了类继承的想法。
如果您确定需要这样做,则应将对象指针转换为ChildClass*
类型,然后使用其属性。
void ParentClass::needToGoDeeper() {
ChildClass* obj = qobject_cast<ChildClass*>(this);
if (obj) {
int count = obj->metaObject()->propertyCount();
//...
}
}