Windows环境下Python Qt通过QQuickWidget加载QML CircularGauge报错如何解决
错误根因说明
NumberAnimation is not a type报错:你复制的官方示例代码缺少QtQuick核心模块导入,NumberAnimation属于QtQuick核心组件,没有导入无法被识别。CircularGauge is instantiated recursively报错:你的本地QML文件命名为CircularGauge.qml,和官方的CircularGauge组件重名,QML解析器会优先加载同目录下的同名本地文件,导致组件自己调用自己的递归问题。
解决步骤
- 重命名本地QML文件
将你当前的CircularGauge.qml修改为其他名称,比如GaugeDemo.qml,避免和官方组件重名。 - 补全QML导入语句
在重命名后的QML文件头部添加必须的导入配置:
// 适配你本地的Qt版本即可,PySide6对应Qt6可以直接写不加版本号 import QtQuick 2.15 // 如果你使用的是Qt商业版的Enterprise Controls,添加对应导入 import QtQuick.Enterprise.Controls 1.4 // 如果你使用开源版Qt,CircularGauge已合并到QtQuick.Controls,直接导入即可 // import QtQuick.Controls
- 修改Python加载路径
将你代码中的加载语句修改为对应重命名后的文件:
widget.setSource('GaugeDemo.qml')
可运行验证示例
如果使用开源版Qt,你可以直接用以下简化示例测试加载:
import QtQuick import QtQuick.Controls Rectangle { width: 400 height: 400 CircularGauge { anchors.fill: parent from: 0 to: 120 value: 75 } }
内容的提问来源于stack exchange,提问作者Kevan Pigott
相关产品推荐
相关产品推荐

