自制Qt Quick场景切换管理类

本文介绍了作者自制的Qt Quick场景切换管理类,旨在实现懒加载和在程序关闭时删除界面实例的需求。Qt Quick的Qt.createComponent和component.createObject方法被用来创建和销毁对象。文章还提供了类的QML代码示例以及如何同步加载界面的方法,以避免异步加载可能遇到的问题。
摘要由CSDN通过智能技术生成

自制Qt Quick场景切换管理类

       Qt Quick中有很多方法进行场景的切换,比如说使用Loader切换source的办法,还有StackView中对界面item进行push和pop进行操作。甚至自己也可以写方法,对item的显隐进行操作。当然上述方法或多或少我都尝试过,但这些我都感到不太满意,我于是想自己写一个场景的管理类,来解决这个问题。

蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/48139563。欢迎同行前来探讨。

       在制作这个管理类之前,我提出了这些需求:

1、 必须做到懒加载。在之前的解决方案中,Loader和StackView只在通过设置容器的内容同时对内容进行一次实例化,这样符合懒加载的策略。而自己以前的界面切换方法(详细代码参见我以前的博客)将界面的初始化方法放在了程序初始化的时候,没有做到需要才加载,所以以前的方案不符合。

2、 界面实例删除的时机应该是程序关闭时。这个在Loader和StackView是不满足的,因为这些当进行界面切换的时候会将原有界面的实例删除,假设界面构造的成本很高(指的是花的时间很长),而且要重复使用,切换的时候就删除了,这样不划算。而自己以前的界面切换方法是满足的。

要满足这些需求,就要尝试在Qt Quick中寻找能够类似C++的new和delete这样的方法。好在Qt Quick提供了在Javascript中创建对象的方法Qt.createComponent和component.createObject,而创建了的对象想要删除也很方便,凡是这样创建的对象,都附带了destroy()方法,十分方便。

于是我花了一些时间制作了这样一个简易的界面切换类,提供类似StackView的使用方法,让我们感觉切换起来很方便。下面是该类的QML代码:


                
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值