在qml中,loader创建的组件,此时当loader的souceComponet变了其他组件,那么之前创建的组件还在吗?

发布时间:2024年01月13日

在 QML 中,当 Loader 的 sourceComponent 属性变更为其他组件时,之前创建的组件会被销毁。这是因为 Loader 负责加载和卸载不同的组件。

以下是一个简单的例子,演示 Loader 的工作方式:

import QtQuick 2.0

Rectangle {
    width: 360
    height: 360

    ListModel {
        id: myModel
        ListElement { name: "Item 1"; value: 1 }
        ListElement { name: "Item 2"; value: 2 }
        ListElement { name: "Item 3"; value: 3 }
    }

    Button {
        text: "Add Item"
        anchors.centerIn: parent
        onClicked: {
            var newItem = { name: "Item " + (myModel.count + 1), value: myModel.count + 1 };
            myModel.append(newItem);
        }
    }

    Button {
        text: "Remove Item"
        anchors.bottom: parent.bottom
        onClicked: {
            if (myModel.count > 0) {
                myModel.remove(myModel.count - 1);
            }
        }
    }

    ListView {
        anchors.fill: parent
        model: myModel
        delegate: Text { text: name; font.pixelSize: 24 }
    }
}

在这个例子中,初始时 Loader 加载的是蓝色的矩形,带有文字 “Initial Component”。当鼠标点击时,Loader 的 sourceComponent 被切换为红色的矩形,带有文字 “New Component”。在切换时,之前加载的蓝色矩形会被销毁,而新加载的红色矩形会取而代之。

文章来源:https://blog.csdn.net/weixin_43972388/article/details/135571628
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。