QtQuick多页面切换、多页面切换动画、多个qml文件数据交互

本文详细介绍了QtQuick中实现界面切换的四种方法,包括隐藏法、动态创建、Loader加载以及使用StackView和SwipeView等组件。同时,讲解了页面切换动画的原理和实现,以及在多页面间进行数据交互的两种策略:共享上级和父子级关系。此外,还提及了QtQuick中页面切换的平滑过渡效果。
摘要由CSDN通过智能技术生成

原文地址::https://blog.csdn.net/zusi_csdn/article/details/80546853

相关文章

1、QML 界面切换的几种方法(带示例代码)----http://www.manongjc.com/detail/19-nyawlcikcwqgqzc.html

2、QML 界面切换的几种方法(带示例代码)----https://www.cnblogs.com/linuxAndMcu/p/13566502.html

3、Qt移动应用开发(五):场景切换----https://blog.csdn.net/gamesdev/article/details/34840415

4、qml 如何界面切换----https://bbs.csdn.net/topics/390864796

5、Qt-多界面编程(界面切换)----https://blog.csdn.net/tiydy/article/details/83409726?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=1331645.10707.16183874871635349&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

 

一、QtQuick多页面切换方法

(1)“隐藏法”

前一个视图visible设为false或者透明度opacity设为0,相当于“隐藏”了,实际还存在;

要显示的视图visible设为true或者透明度opacity设为1,显示出来;

(2)“动态”

var component = Qt.createComponent("Page1.qml").createObject(container,{width:100,heisght:100);

创建一个基于“Page1.qml”的组件,在组件基础上创建一个新对象,对象放在container父对象里面,这个新创建的对象长度100,宽度100;createObject函数原型为:

object createObject(QtObject parent, object properties)

销毁方法:(1)component.destroy();(2)Page1.qml顶层Item的id,id.destroy();

新对象屏蔽相同区域父对象原来的的鼠标响应:MouseArea{ anchors.fill:parent };

新对象大小若超出container父对象的区域:设置父对象 clip:true;

(3)“Loader加载”

Item {    

    width: 200; height: 200       
    Loader { id: pageLoader }      
    MouseArea {         anchors.fill: parent         onClicked: pageLoader.source = "Page1.qml"    } 

定义一个Loader,当需要加载时设置pageLoader.source="Page1.qml";

销毁时设置pageLoader.source="",空字符串即可;

(4)使用StackView、SwipeView等页面切换;

二、QtQuick多页面切换动画

(1)原理:首先页面切换动画目前已知只适用于“隐藏法”的页面切换动画,通过改变属性visible、opacity等的值调用PropertyAnimation动画,或者定义若干个状态,当状态State变化时调用transition中定义的动画;

QML页面切换 可以使用动画控制每个页面的宽度与透明度从而控制页面的平滑切换;

(2)StackView、SwipeView等自带页面切换平滑过渡动画;

三、多个qml文件数据交互

(1)“共同上级”

 如果1.qml和2.qml是平级,那么你需要建立一个包含他们两个的上级,在上级建立参数,由上级的参数来实现1,2的数据交换;

(2)“父子级(上下级)”

1.qml需要访问2.qml中的数据:把1.qml定义在2.qml里面作为下级(子级),反之亦然;

总原则:下级可以访问上级数据,下级修改某个数据会通知上级;其他情况可能不会发送修改通知,数据不一致;

              若qml文件中导入javascript文件 import "XXX.js" ,则在XXX.js文件中可以直接使用qml文件中定义的对象;
————————————————
版权声明:本文为CSDN博主「zusi_csdn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zusi_csdn/article/details/80546853

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值