QML程序架构设计(一)

        在写qml程序时,遇到一种bug,子视图覆盖在父视图之上显示,但是还可以点击到父视图的内容,从而使程序紊乱,出现这个问题,就与程序的架构设计有关,如果设计不合理,即会出现这个问题,修改起来也是很麻烦。

先上一个出现上述问题的例程:

(晚上续写)

       一转眼,两周过去了,终于抽了个时间来写这篇文章,到现在还能记得起来的,才是真正记住的吧。

       回到上面的问题,在一个qml界面中,有一个父界面,当达到条件,子界面覆盖父界面显示,但是父界面却并不能将visiable设置为false,因为父界面还有一部分在显示,是配合子界面的,一般的程序思路是这样的(我一开始也是这样写的)

Rectangle{//父界面
  Rectangle{//子界面
    Rectangle{//孙子界面
    }
  }
  MouseAera{
  
}

}

这种情况下,父界面的MouseArea会将子界面的鼠标事件截断,导致子界面的点击事件失效。

方法一: 

      为了避免这种尴尬,我们可以将将嵌套式构建更改为并行构建,例如

Rectangle
{}//父界面
Rectangle
{}//子界面
Rectangle
{}//孙子界面
这样在父界面中做屏蔽鼠标事件就不会影响到子界面和其他界面了。

方法二:

        使用状态机,将各个界面通过状态来切换,在状态机中切换也是一个不错的,为此专门研究状态机研究了一个下午。具体状态机的使用请参考:(文章还没有发布,发布将链接贴上来)。


      最后谈谈对架构的理解,因为最近一段时间一直在对自己之前写的程序改bug,改的过程中,发现有好多程序的设计都不好(当时写的时候肯定没觉得啦),就有了另外一中构建方法,比原来的构建要更加清晰,思路完善,代码长度也会减少,这是一中进步,而这新的构建,就是对架构的一中理解的提升。文章记录的更重要的思路,具体的代码实现没有贴出来。每个人都会有不同的理解吧。


猜你喜欢

转载自blog.csdn.net/bootleader/article/details/76021459
今日推荐