在 QML 中,当 Loader 的 sourceComponent 属性变更为其他组件时,之前创建的组件会被销毁。这是因为 Loader 负责加载和卸载不同的组件。
以下是一个简单的例子,演示 Loader 的工作方式:
import QtQuick 2.0Rectangle {width: 360height: 360ListModel {id: myModelListElement { name: "Item 1"; value: 1 }ListElement { name: "Item 2"; value: 2 }ListElement { name: "Item 3"; value: 3 }}Button {text: "Add Item"anchors.centerIn: parentonClicked: {var newItem = { name: "Item " + (myModel.count + 1), value: myModel.count + 1 };myModel.append(newItem);}}Button {text: "Remove Item"anchors.bottom: parent.bottomonClicked: {if (myModel.count > 0) {myModel.remove(myModel.count - 1);}}}ListView {anchors.fill: parentmodel: myModeldelegate: Text { text: name; font.pixelSize: 24 }}
}
在这个例子中,初始时 Loader 加载的是蓝色的矩形,带有文字 “Initial Component”。当鼠标点击时,Loader 的 sourceComponent 被切换为红色的矩形,带有文字 “New Component”。在切换时,之前加载的蓝色矩形会被销毁,而新加载的红色矩形会取而代之。