PySide2 के साथ संसाधन (QRC) फ़ाइल से QML आयात करना
Nov 24 2020
मैंने अपनी "resource.qrc" फ़ाइल में एक सरल QML घटक ("qml / MyButton") जोड़ा है:
<RCC>
<qresource prefix="/">
<file>qml/MyButton.qml</file>
</qresource>
</RCC>
मैंने तब क्यूआरसी को एक अजगर मॉड्यूल के साथ संकलित किया:
pyside2-rcc -o resource.py संसाधन.qrc
तब मैंने main.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 एक प्रकार नहीं है"। मैं अजगर उत्पन्न संसाधन फ़ाइल का उपयोग करके QML घटक का उपयोग करना चाहता हूं। मुझे नहीं पता कि मैं क्या गलत कर रहा हूं।
जवाब
1 eyllanesc Nov 24 2020 at 06:54
यदि .qml मुख्य फ़ाइल के बगल में है, तो स्वचालित आयात करें, लेकिन आपके मामले में MyButton.qml मुख्य.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 {
}
}