Qt:meta.enumeratorCount() 没有元数据用于 Q_OBJECT 中的枚举,为啥?
Posted
技术标签:
【中文标题】Qt:meta.enumeratorCount() 没有元数据用于 Q_OBJECT 中的枚举,为啥?【英文标题】:Qt: No metadata by meta.enumeratorCount() for enum in Q_OBJECT, why?Qt:meta.enumeratorCount() 没有元数据用于 Q_OBJECT 中的枚举,为什么? 【发布时间】:2012-07-26 22:37:49 【问题描述】:我有以下课程,我尝试获取enum MyEnum
的一些元数据。但是,当循环遍历meta.enumeratorCount()
时,它的计数始终为 0。基本上我关注的是this example here。为了找到问题所在,我也尝试了同样的方法,同样的问题 - 方法计数 0。代码编译,没有错误没有警告。
一定是个愚蠢的错误......也许你可以帮助我
class FsxSimConnectQtfier : public QObject
Q_OBJECT
public:
explicit FsxSimConnectQtfier(QObject *parent = 0);
enum MyEnum G1, G2 ;
static const QString simConnectExceptionToString(const DWORD id);
;
const QString FsxSimConnectQtfier::simConnectExceptionToString(const DWORD id)
// int i= FsxSimConnectQtfier::staticMetaObject.indexOfEnumerator("MyEnum");
// -1 -> not found, why?
QMetaObject meta = FsxSimConnectQtfier::staticMetaObject;
for (int i=0; i < meta.enumeratorCount(); ++i)
QMetaEnum m = meta.enumerator(i); // never reached, why?
return "";
【问题讨论】:
【参考方案1】:您需要使用the Q_ENUMS()
macro 向元数据系统注册枚举:
class FsxSimConnectQtfier : public QObject
Q_OBJECT
Q_ENUMS(MyEnum) // <---
public:
explicit FsxSimConnectQtfier(QObject *parent = 0);
enum MyEnum G1, G2 ;
static const QString simConnectExceptionToString(const unsigned int id);
;
【讨论】:
非常感谢,如果您对后续工作有任何想法,也许您可以再次帮助我。如果没有,请不要介意。 ***.com/questions/11690684/…以上是关于Qt:meta.enumeratorCount() 没有元数据用于 Q_OBJECT 中的枚举,为啥?的主要内容,如果未能解决你的问题,请参考以下文章