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 {
    }
}