我遇到了财产问题。
所以我有一些类(UML)
POST https://content.googleapis.com/drive/v3/files
Content-Type: application/json
{
"name": "test123.png"
}
CNode
|--CNode2D
|--CSprite2D
包含以下属性:
CNode
Q_OBJECT
Q_PROPERTY(QString name READ getName WRITE setName)
Q_PROPERTY(bool visible READ getVisible WRITE setVisible)
Q_PROPERTY(bool enabled READ getEnabled WRITE setEnabled)
有:
CNode2D
Q_OBJECT
Q_PROPERTY(float Position_X READ getPosX WRITE setPosX)
Q_PROPERTY(float Position_Y READ getPosY WRITE setPosY)
Q_PROPERTY(float height READ getHeight WRITE setHeight)
没有...
如果我尝试在CSprite2D
CSprite2D
我只输出for(int i = metaObject()->propertyOffset(); i < metaObject()->propertyCount(); ++i)
{
qDebug() << metaObject()->property(i).name() << metaObject()->property(i).read(this);
}
CNode2D
这让我觉得Position_X QVariant(float, 7.47779e+21)
Position_Y QVariant(float, 4.58827e-41)
height QVariant(float, 0)
没有继承CNode2D
的属性......
只有CNode
继承自CNode
。
如果我继承了QObject
中的其他两个类,我会向我抛出编译错误。
我是Qt的新手,所以我可能忘记了一些重要的事情,在这种情况下,抱歉。
编辑:这是类定义(我删除了包含):
QObject
答案 0 :(得分:3)
刚试了一些代码,因为我很好奇:
你必须添加另一个循环来访问超类的属性,如:
for(int i = metaObject()->superClass()->propertyOffset(); i < metaObject()->superClass()->propertyCount(); ++i)
{
qDebug() << metaObject()->superClass()->property(i).name() << metaObject()->superClass()->property(i).read(this);
}
只调用metaObject()只访问派生实例而不访问父项。