Qml运行机制的理解(原创)

1.层级执行性
对于qml运行代码,具有层级效果,在运行一个qml代码时,会先执行最上层的代码进行构建,然后逐级的向下层进行执行,如图所示: Qml运行机制的理解(原创)_第1张图片
图1

图1所示,就是qml的部分机制,该机制有如下几个特点:

c.在程序启动执行过程中,程序会先解析最上层的代码,然后逐级向下解析,最后执行最低层的程序代码。
在此解析机制下面,对于程序代码结构的设计需要注意:
1)在做数据清除操作时,将其动作放在操作步骤的最顶层执行完一个流程之后清除。
2)在对程序做初始化时,避免对启动界面需要初始化的变量做操作,界面启动初始化的变量会因为程序初始化而将值改变。
d.在qml与c++交互过程中,程序运行执行顺序有以下几点:
1) 当qml的点击事件中,没有与c++交互的事件,全部是qml端的数据操作,则按顺序执行。
2)当顺序执行过程中,遇到与c++的交互事件,则去执行c++端的代码,执行完毕再回来继续向下执行,相当于单片机中的中断系统。
3)当点击事件触发另一模块的显示时,显示模块内的onVisibleChange函数先执行,执行完毕再去执行点击函数中显示变量后面的程序,也就是onVisibleChange比onClicked要快。示例如下:
Qml运行机制的理解(原创)_第2张图片

上图中142行获取另一模块的显示变量,这是,程序会调去先执行显示模块的onVisibleChange函数
Qml运行机制的理解(原创)_第3张图片

执行完上面的额onVisibleChangeed函数,会再跳回第一图中的144行继续执行。
4)在qml中的,定时器会等待该次点击事件中其他事件全部执行完毕,才开始定时,也就是说,定时器最后执行。
示例如下:
Qml运行机制的理解(原创)_第4张图片

在该点击事件中,323行开启定时器,到327行运行完毕才开始进行定时,(有待再次验证)


2.权限性
如图1所示:
a.父级的所有数据,在其之上的子级都可以访问,但是父级不能访问隔代子级的数据。也就是说,ABCDEF模块可以随意访问O模块的数据,但是O模块只能访问AD模块暴露出来的数据,不暴露的不能访问,BCEF模块的所有数据均不可访问。
b.同级模块之间可以访问暴露出来的数据,未暴露的数据不可访问,并且不可访问同级模块内部的模块数据。A模块和D模块是同级模块,但是A不可以访问D下面的其他模块,同理,D也不可以做相同的操作。此时A变为B的父级。

2017/2/27

3.qml程序设计要点
a.当前界面的数据,在下一界面接入时进行数据的清除与恢复,不要等待大的功能模块去完成,会变得复杂而不好控制。

你可能感兴趣的:(Qml)