gpt4 book ai didi

c++ - Q_ENUMS 与 BOOST_SCOPED_ENUM

转载 作者:行者123 更新时间:2023-11-30 04:20:33 24 4
gpt4 key购买 nike

我正在开发一个项目,该项目具有 BOOST_SCOPED_ENUM 的枚举定义,例如:

BOOST_SCOPED_ENUM_START(myEnum)
{
A = 0,
B
};
BOOST_SCOPED_ENUM_END;

现在我想使用 Q_ENUMS 在 QT 中注册这个枚举并用它定义 Q_PROPERTY,比如:

Q_ENUMS(myEnum)

Q_PROPERTY(myEnum myEnumVar READ getMyEnumVar WRITE setMyEnumVar)

这不起作用,我尝试在 Q_ENUMSQ_PROPERTY 定义上添加 BOOST_SCOPED_ENUM() 宏,但它也没有帮助。

Q_ENUMS 注册 BOOST_SCOPED_ENUM 枚举的正确方法是什么?

最佳答案

BOOST_SCOPED_ENUM_* 只是声明结构:

# define BOOST_SCOPED_ENUM_START(name) struct name { enum enum_t
# define BOOST_SCOPED_ENUM_END };
# define BOOST_SCOPED_ENUM(name) name::enum_t

因此您的枚举实际上是 name::enum_t。Qt 文档还说明了以下关于 Q_ENUMS 的内容:

If you want to register an enum that is declared in another class, the enum must be fully qualified with the name of the class defining it. In addition, the class defining the enum has to inherit QObject as well as declare the enum using Q_ENUMS().

我认为将 BOOST_SCOPED_ENUM_*Q_ENUMS 一起使用是不可能的,因为它会生成不继承 QObject 的结构。

关于c++ - Q_ENUMS 与 BOOST_SCOPED_ENUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15219722/

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