Qml-Item的构造和显示顺序
qml文件中组件构造顺序
- 在同一个qml文件中,同层级的Item, 文件尾的Item优先构造,文件首的Item后构造。这就能解释默认情况下同一个qml文件中,几个同层级的item都设置了focus:true,为啥最上面item最终有焦点。
- 在同一个qml文件中,父子关系的Item,优先构造父Item,在逐层构造子Item对象。子Item对象构造满足条件1;
- 在同一个qml文件中,显示是按照头到尾的属性进行显示,即同层级,同位置,尾部的item显示在前面。
Item构造和显示实列代码
有三个Rectangle,红色Rect 和蓝色Rect 是同层级的且都设置了focus:true,“lightblue” 是红色Rect的子项, 代码如下:
import QtQuickItem{height: 480width: 320Rectangle{id:idRec1;focus: true;color: activeFocus? "red":"yellow"width: 100height:100Component.onCompleted: {console.log("completed 1" );}Rectangle{id:idRec1Child;color:"lightblue"width: 50height:50Component.onCompleted: {console.log("completed 1 child" );}}}Rectangle{id:idRec2;anchors.left: idRec1.rightanchors.leftMargin: 20focus: true;color: activeFocus? "blue":"yellow"width: 100height:100Component.onCompleted: {console.log("completed 2");}}}
Item构造和显示实例效果如下
Item构造和显示实例运行输出如下
1.蓝色Rect 先构造,然后构造同层级的红色Rect,最后构造红色Rect中子Rect