如何在QML文件中使用QRC文件?

How to use QRC files in QML files?

我有一个我一直在开发的应用程序,最近我听说了 qml 和 qrc 文件系统,在此之前,我一直只使用 PySide6 和 qss。所以我一直在使用 qml 为这个应用程序制作一个 GUI,但是我已经 运行 撞墙了。我想给按钮一个图标,所以在我的 qrc 文件中我这样写:

<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
    <file>menu_icons/menu.png</file>
</qresource>
</RCC>

并为我的按钮提供我写的图标:

Button {
            id: "menu_toggle_button"
            
            text: qsTr("Menu")

            flat: true
            width: menu.width

            font.family: "Times New Roman"
            font.pointSize: 20

            icon.source: ":/menu_icons/menu.png"
}

但这似乎不起作用,当我 运行 代码时,我收到此消息:

file:///C:/Users/User/AppData/Local/Programs/Python/Python39/lib/site-packages/PySide6/qml/QtQuick/Controls/Material/Button.qml: QML IconImage: Cannot open: file:///C:/Users/User/AppData/Local/Programs/Python/Python39/lib/site-packages/PySide6/qml/QtQuick/Controls/Material/:/menu_icons/menu.png

这是我的 python 代码:

import sys

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())

我曾尝试将 icon.source: ":/menu_icons/menu.png" 更改为 icon.source: "qrc:/menu_icons/menu.png",但这只是将错误消息更改为包含 qrc:/ 而不是仅包含 :/

那我做错了什么?

您必须执行以下操作:

  1. 将 .qrc 转换为 .py:pyside6-rcc resources.qrc -o resources_rc.py

  2. import resources_rc添加到main.py

  3. 使用完整路径:icon.source: "qrc:/menu_icons/menu.png".