Qt Quick是一个强大的UI开发利器,简单的几行代码就可以实现一个非常酷炫的界面。但比较遗憾的是它目前功能还不是十分完善,一些常用的控件还都没有实现,就比如多页面容器。一般情况下我们在一个QML文档中只有一个页面,也就是只有一个根元素,而不能够在多个页面之间跳转。在很多移动开发中,页面跳转是一个十分重要的功能,尤其是Qt Quick这样针对于移动开发的类库,页面跳转也是十分重要。iOS在页面间导航的方面做得比较优秀了,比较经典的就是UINavigationController这个类了,它提供了一个ViewController间导航的功能,而且动画等方面做得都不错。
我在这里就来实现一个Qt Quick中的简易NavigationController,其实真的很简易,就仅提供了页面跳转的功能,什么压栈出栈的还没实现。
先看一下效果:
核心要素:
1. 能够获取一个元素中的children(所有可视的元素)
2. 对元素进行动画效果
这个东西更多的是用到了QML中一些比较隐性特性,这些我们在下面代码讲解的时候再去一一介绍。
具体实现:
首先我们要新建一个QML文件,就叫它NavigationController.qml吧。它是一个继承Item的元素(QML貌似没有继承这个概念,但可以这么理解),给它定义三个属性,注意,它们都非常重要:
property int currentIn