假设我有一个现有的enum X { A, B }
并希望将它与 Qt 元数据一起使用,例如QMetaObject
/ QMetaEnum
。
QMetaObject meta = FsxSimConnectQtfier::staticMetaObject;
for (int i=0; i < meta.enumeratorCount(); ++i) {
QMetaEnum m = meta.enumerator(i);
}
如果我enum
在一个Q_OBJECT
类中定义我的,一切都很好,即我可以MyEnum
通过元数据系统检索。但是我怎样才能使X
元数据系统可用呢?
class FsxSimConnectQtfier : public QObject
{
Q_OBJECT
Q_ENUMS(MyEnum)
Q_ENUMS(X) // not working
public:
explicit FsxSimConnectQtfier(QObject *parent = 0);
enum MyEnum { G1, G2 };
// how can I make enum X available for the metadata system
// I have tried typedef, but did not work
static const QString simConnectExceptionToString(const unsigned int id);
};
- 这是以下内容的后续:Qt: Meta.enumeratorCount() 没有元数据用于 Q_OBJECT 中的枚举,为什么?
- 动机:real
enum X
包含很多异常代码,我想使用元数据系统来获取原始描述性文本,和这里差不多。原件enum
不是(!)一个Q_OBJECT
。