假设我有一个现有的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,为什么呢?
- 动机:真正的
enum X
包含了许多异常代码,我想用元数据系统来获取原始的描述性文字,几乎是在这里 。 原来enum
是不是(!)的Q_OBJECT
。