[英]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.