【发布时间】:2025-12-09 09:50:01
【问题描述】:
我正在 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
}
现在我想读取父类中的所有属性,但是我只能读取父类的属性。如何获取子类的属性?有什么舒服的方法吗?
【问题讨论】:
-
你认为你为什么需要这个?父类永远不应该知道子类,所以我很自信地说你的类设计有问题。
-
我的目的是创建一个易于使用的数据库输入/输出系统。因此,用户只需要在他自己的类中定义他想要持久存储在数据库中的属性(属性),该类继承自已经定义了一些属性的父类。父类应该读取其子类的所有属性,并使用所有属性作为属性构建表。我可以将它分开,但是用户必须自己注册自己的属性类。
-
现在如果用户不希望他的子类的属性被保存到数据库中怎么办?或者如果他甚至不知道基类将访问子类的属性怎么办?您应该在基类中创建一个模板方法,然后从子类中调用它:
registerProperty<int>("height", &m_height);或类似的东西,具体取决于您的程序的工作方式。但一个基本规则是; 从不从基类访问子类。没有例外。
标签: qt properties qobject