gpt4 book ai didi

c++ - Qt:Q_OBJECT 中的枚举没有 meta.enumeratorCount() 的元数据,为什么?

转载 作者:行者123 更新时间:2023-11-30 04:26:13 25 4
gpt4 key购买 nike

我有以下类(class),我在其中尝试获取 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 "";
}

最佳答案

您需要使用 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);
};

关于c++ - Qt:Q_OBJECT 中的枚举没有 meta.enumeratorCount() 的元数据,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11679057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com