如何使用QML中的加载器从另一个文件加载组件

时间:2019-11-01 13:12:43

标签: qt qml

我正在使用加载程序加载另一个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 :(得分:0)

通过将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
        }
    }