как загрузить компонент из другого файла, используя загрузчик в qml - PullRequest
2 голосов
/ 01 ноября 2019

Я использую загрузчик для загрузки другого файла qml, и после того, как этот файл загружен, я пытаюсь установить его компонент. Проблема в том, что qml не распознает имя компонента, как оно определено в другом файле.

Я знаю, если я сделаю компонент, который он может распознать, и загрузит его с помощью загрузчика. Но то, что я пытаюсь сделать, это попытаться загрузить компонент из другого файла, используя загрузчик . Пожалуйста, помогите мне. Спасибо.

Inside main.qml

     MouseArea {
                anchors.fill: parent
                onClicked: {
                    display.visible = false
                    loader.source = "second.qml"
                    loader.sourceComponent = secondcomp

                }
            }
second.qml


import QtQuick 2.0

Component {
    id : secondcomp

    Rectangle{
        id : display
        x: 0
        y: 100
        visible: true
        width: 100
        height: 100
        color: "red"
    }
}

1 Ответ

0 голосов
/ 01 ноября 2019

, установив secondcomp как свойство и сделав его псевдонимом для использования в другом файле

Item{

        id : main


        property alias secondcomp: secondcomp

        Component {
            id : secondcomp


            Rectangle{
                id : display
                signal message(string msg)
                x: 400
                y: 400
                visible: true
                width: 100
                height: 100
                color: "red"
            }
        }

        MouseArea {
            anchors.fill: parent
            onClicked: secondcomp.message("clicked!")
        }
    }

и сделав main.qml

    MouseArea {
        anchors.fill: parent
        onClicked: {
            display.visible = false
            loader.source = "second.qml"
            loader.sourceComponent = loader.item.secondcomp
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...