【发布时间】:2021-03-29 13:30:11
【问题描述】:
我在MyClass 中声明了一个Q_ENUM,如下所示:
class MyClass {
public:
enum Enum_Test {
eTestA,
eTestB
}
Q_ENUM(Enum_Test)
Q_OBJECT
Q_PROPERTY(MyClass::Enum_Test enumTest READ GetEnumTest WRITE SetEnumTest )
}
我在 QML 端注册了MyClass,如下所示并且能够访问它。
auto my_class = std::make_shared<MyClass>();
qmlRegisterUncreatableType<MyClass>("MyClass", 1,0, "MyClass","Cannot create type MyClass in QML");
rootContext()->setContextProperty("my_class", my_class.get());
如何从 QML 访问 Q_ENUM Enum_Test?
【问题讨论】:
-
显示的代码不是你如何注册一个类,这是设置一个上下文属性。你需要
qmlRegisterType,之后你可以做MyClass.TestA。枚举也必须以大写开头 -
我更新了我的问题。如果我得到一个如何访问 Q_ENUM 的示例,这是我问题的主要观点,我可以负责正确注册课程。
-
MyClass 应该派生自 QObject。