python - 在 PySide2 中为 QML 注册枚举

标签 python enums qml qt5 pyside2

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

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

最佳答案

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

这是它可能看起来像的一个例子:

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

为了在 QML 中访问这个枚举,你需要 register首先:

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

然后将其导入您的 QML:

import yourlibname 1.0

关于python - 在 PySide2 中为 QML 注册枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55280431/

相关文章:

qt - QML 动画可见属性更改

c++ - QFile 无法识别文件 :///url path format

python - 除了 OSX 上现有的 pyenv 安装之外,如何安装 Anaconda?

swift - 实现枚举 ForwardIndexType

c++ - 枚举类型作为soapcpp2中的返回值

c# - 如何使用 FlagsAttribute

c++ - 如何在qt中调试xcode项目?

Python 图像 (PIL) 库无法根据 kwargs 正确调整大小

python - 找出哪些参数在 argparse 中显式传递

javascript - 如何通过Jquery脚本将图像加载到html中?