使用PySide2从资源(QRC)文件导入QML



我在我的"中添加了一个简单的QML组件("QML/MyButton"(;resource.qrc";文件:

<RCC>
<qresource prefix="/">
<file>qml/MyButton.qml</file>
</qresource>
</RCC>

然后,我将QRC编译为一个python模块,其中包含:

pyside2 rcc-o resource.py resource.qrc

然后我在main.py:中导入了resource.py

import sys
import os
from PySide2.QtGui import QGuiApplication
from PySide2.QtQml import QQmlApplicationEngine
import resource
if __name__ == "__main__":
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load(os.path.join(os.path.dirname(__file__), "main.qml"))
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())

并在main.qml:中称为MyButton组件

import QtQuick 2.13
import QtQuick.Window 2.13
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
MyButton {
}
}

这是";qml/MyButton.qml":

import QtQuick 2.0
import QtQuick.Controls 2.13
Button {
text: 'Click Me'
}

当我运行该程序时;MyButton不是"类型;。我想通过使用python生成的资源文件来使用QML组件。我不知道我做错了什么。

如果.qml在主文件旁边,但在您的情况下MyButton.qml不在main.qml旁边,则自动导入,因此必须导入包:

import QtQuick 2.13
import QtQuick.Window 2.13
import "qrc:/qml"
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
MyButton {
}
}

最新更新