SuperAPI AI 工具集

pyside6-qml-bridge

编程与开发

查看项目

更新于 10-15 21:34

技能介绍

用途:在 PySide6 应用中充当 Python 业务逻辑与 QML 视图之间的桥接层。桥接类是 QObject 子类,通过 Qt 元对象系统向 QML 暴露属性、信号和槽,并委托给 Controller 处理业务逻辑。

主要能力:用 @Property 定义带 NOTIFY 信号的 Qt 属性;用 @Slot 暴露可从 QML 调用的方法;用 QAbstractListModel 向 ListView/Repeater 提供列表数据;给出 Python 与 Qt/QML 的类型映射(str、int、float、bool、list、dict、QUrl、QColor、QStringList、QVariantList、QVariantMap);提供 QThread 配合信号编组处理耗时操作的方式。

使用方式:桥接类持有 Controller 与信号注册表,内部保存属性后备字段,属性变更时 emit 对应信号。注册到 QML 有三种方式:上下文属性 ctx.setContextProperty("jobBridge", ...)(适合单例)、qmlRegisterType(JobBridge, "MyApp", 1, 0, "JobBridge")(适合可实例化类型)、以及 PySide6 6.5+ 的 @QmlElement 装饰器。QML 侧通过 jobBridge.jobNumber 绑定属性、jobBridge.activateJob("1234567") 调用槽。

适用场景:需要将 Python 控制器、仓储或服务的数据与操作暴露给 QML 界面的桌面应用。

限制与约定:桥接层不应内嵌业务逻辑,不直接访问数据库、服务或消息代理,应委托给 Controller;不应从 Python 反向查找并修改 QML 控件,而应更新属性让绑定生效;属性变更必须 emit NOTIFY 信号,否则 QML 绑定不会刷新。命名上类名用 PascalCase、后备字段用 _snake_case、Qt 属性与槽用 camelCase、信号用 snake_case。资料未提供具体安装命令、版本要求或收费信息。