[英]How to get names of the struct members from QMetaType?
我有:
struct myStruct {
int m_valueA;
float m_valueA;
bool m_valueA;
};
Q_DECLARE_METATYPE(myStruct)
....
struct myStructXY {
....
};
Q_DECLARE_METATYPE(myStructXY)
我可以从QMetaEnum
获取枚举名称:
Q_ENUM(myEnum)
QMetaEnum enumTypes QMetaEnum::fromType<myEnum>();
QMap<qint32, QString> labelsMap;
for(int i = 0; i < enumTypes.keyCount(); i++)
{
QString enumName = QString(enumTypes.key(i));
labelsMap.insert(enumTypes.value(i), enumName);
}
我想从元类型中动态地收集myStruct
成员的名称和类型,类似于之前的枚举案例。 喜欢:
QMetaObject structType;
QStringList list = getStructMemberNames(structType);
Qt可以选择执行此操作吗? 我已经搜索了QMetaType,但我需要更多功能来执行此操作。
我认为在Qt中没有任何这样做的意图。
最接近的是QMetaObject,它公开了信号,插槽和属性。 属性看起来就像暴露成员变量,但这与您要求的不完全相同。
还要注意,仅当在由Moc处理的QObject类中使用Q_ENUM时,QMetaEnum才起作用。 因此,对于使用struct进行类似的操作,它仅适用于QObjects内部的struct并使用Q_STRUCT进行声明,但到目前为止,该功能尚不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.