首页 > 解决方案 > 在 PySide2 中为 QML 注册枚举

问题描述

我想使用 PySide2 将枚举从 Python 导出到 QML。可以使用 PyQt5 请参阅PyQt5 && QML exporting enum

但是,PySide2 中不存在所需的 Q_ENUMS。PySide2 中还有其他方法吗?

标签: pythonenumsqmlqt5pyside2

解决方案


我知道这是一个老问题,但是对于较新版本的 PySide2,您现在可以使用 @QEnum 装饰器。它要求您使用 QObject 作为包装器(类似于您在枚举周围放置的 C++ 命名空间)。

这是它的外观示例:

class UserState(QObject):
    @QEnum
    class Options(Enum):
        ONLINE = 0
        OFFLINE = 1
        BUSY = 2

为了在 QML 中访问这个枚举,你需要先注册它:

qmlRegisterType(UserState, "yourlibname", 1, 0, "UserState")

然后将其导入您的 QML:

import yourlibname 1.0

推荐阅读