我有以下课程,我尝试获取一些元数据enum MyEnum
。然而,当循环结束时meta.enumeratorCount()
它的计数始终为 0。基本上我在关注这个例子在这里。为了找到问题,我也尝试了同样的方法,同样的问题 - 方法计数 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 "";
}
您需要使用元数据系统注册枚举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);
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)