python - 在 PySide2 中为 QML 注册枚举
问题描述
我想使用 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 中访问这个枚举,你需要先注册它:
qmlRegisterType(UserState, "yourlibname", 1, 0, "UserState")
然后将其导入您的 QML:
import yourlibname 1.0
推荐阅读
- android - Android Retrofit - 如何实现我的网址?
- android - 无法在 android 10 [android Q] 中启动活动背景
- java - E/RecyclerView:没有附加适配器;跳过布局。尽管初始化适配器
- laravel - 如何检查使用 LOG:INFO Laravel 选择的数据
- python - opencv中具有特定像素高度,宽度的视频
- pdf - PDF 到 EPS 或 PS 到 EPS 转换保持页面大小
- c# - C# async / await 问题 - 获取“异步方法的返回类型必须为 void、Task 或 Task
即使我确实返回了一个任务 - reactjs - 带有 ReactJS 的 SonarQube - 对重复项和新代码覆盖率的误报
- python - 如何提取整个表并将其存储在 CSV 文件中?
- java - ViewPager 中相同片段的多个实例的问题?