qml中,解决在Item控件下,加载Window控件,不能显示问题
如以下程序:
Item {
Window{
visible:true
}
}
Window对象并不会被加载出来。和网上找了很多资料,有的说是Qt的bug。之后找见一种如下的方法:
Item {
Window{
Component.onCompleted: {
visible = true
}
}
}
以上程序可以进行正常加载。
问题又来了,这样显示的话,window对象只会被加载一次,将Window关闭之后,不会再次被加载。所以我又开始试验的新的方法。
Component{
id:component
Window{ //为一个Window控件
visible: true
}
}
Loader{
id:loader
}
Loader 可以使用 sourceComponent 来装载一个Component 对象。当 Loader 的 sourceComponent 属性发生变化时,它之前加载的 Component 会自动销毁,新对象会被加载。将 sourceComponent 设置为 undefined ,将会销毁当前加载的对象,相关的资源也会被释放,而 Loader 对象则变成一个空对象。
所以在加载一个Window对象,可以进行如下操作:
loader.sourceComponent = component
当关闭这个Window对象的话
loader.sourceComponent = undefined
这样就可以多次进行Window对象的加载了。
欢迎大家的批评指正!!!