You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:18:04