-
Notifications
You must be signed in to change notification settings - Fork 0
qml loader
KerwinKoo edited this page Dec 28, 2015
·
2 revisions
Loader 可以使用其 source 属性加载一个 qml 文档,也可以通过其 sourceComponent 属性加载一个 Component 对象。
当你需要延迟一些对象直到真正需要才创建它们时, Loader 非常有用。 当 Loader 的 source 或 sourceComponent 属性发生变化时,它之前加载的 Component 会自动销毁,新对象会被加载。
将 source 设置为一个空字符串或将 sourceComponent 设置为 undefined ,将会销毁当前加载的对象,相关的资源也会被释放,而 Loader 对象则变成一个空对象。
Loader 的 item 属性指向它加载的组件的顶层 item ,比如 Loader 加载了我们的颜色选择组件,其 item 属性就指向颜色选择组件的 Rectangle 对象。
对于 Loader 加载的 item ,它暴露出来的接口,如属性、信号等,都可以通过 Loader 的 item 属性来访问。所以我们才可以这么使用:
Loader{
id: redLoader;
anchors.left: parent.left; //处理当前组件的位置
anchors.leftMargin: 4;
anchors.bottom: parent.bottom;
anchors.bottomMargin: 4;
sourceComponent: colorComponent; //加载 id 为 colorComponent 的组件对象
onLoaded:{
item.color = "red"; //设置颜色选择组件的颜色。
}
}上面的代码在 Loader 对象使用 sourceComponent 属性来加载 id 为 colorComponent 的组件对象,然后在 onLoaded 信号处理器中使用 item 属性来设置颜色选择组件的颜色。
对于信号的访问,我们则可以使用 Connections 对象,如下面的 qml 代码所示:
Connections {
target: redLoader.item; //指向**颜色选择组件的顶层 item —— Rectangle **
onColorPicked:{
coloredText.color = clr;
}
}我们创建的 Connections 对象,其 target 指向 redLoader.item ,即指向 颜色选择组件的顶层 item —— Rectangle ,所以可以直接响应它的 colorPicked 信号。