如何在QML文件中使用QRC资源?PySide6加载QRC图标报错求助
你遇到的问题核心是没有将QRC资源文件编译为PySide6可识别的Python模块,也没有在主程序中导入该资源模块,导致QML运行时无法定位到QRC内的资源路径,会把你写的资源路径当成本地相对路径拼接当前控件的目录前缀,就出现了你报错中的无效路径。
步骤1:编译QRC文件
使用PySide6自带的pyside6-rcc工具编译你的QRC文件(假设你的QRC文件命名为resources.qrc),执行命令:
pyside6-rcc resources.qrc -o rc_resources.py
注意:执行命令前要保证QRC文件所在目录下存在
menu_icons/menu.png的相对路径,否则编译出的资源模块会缺失对应图片。
步骤2:导入资源模块
在你的Python主代码中导入编译生成的rc_resources.py模块,仅需导入无需调用模块内内容,即可将资源注册到全局资源系统:
import sys import rc_resources # 导入编译好的资源模块,是解决问题的核心步骤 from PySide6.QtGui import QGuiApplication from PySide6.QtQml import QQmlApplicationEngine app = QGuiApplication(sys.argv) engine = QQmlApplicationEngine() engine.quit.connect(app.quit) engine.load('main.qml') sys.exit(app.exec())
步骤3:修正QML代码
QML中QRC资源统一使用qrc:/前缀,同时注意QML的id是标识符,不需要加字符串引号,修正后代码如下:
Button { id: menu_toggle_button text: qsTr("Menu") flat: true width: menu.width font.family: "Times New Roman" font.pointSize: 20 icon.source: "qrc:/menu_icons/menu.png" }
内容的提问来源于stack exchange,提问作者PyDev19
相关产品推荐
相关产品推荐

