Qt 5.12--QtQuick多页面切换、多页面切换动画、多个qml文件数据交互_qml做界面切换的动画_worthsen的博客-程序员秘密

技术标签: quick  Qt-5.12  

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

1 多页面切换方法

(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等页面切换;
StackView实现了一个栈式的导航。“栈”大家都知道是怎么回事儿,就是一种数据结构,先进后出(FILO),支持pop、push等操作。StackView用于栈类似的行为方式管理一系列的View(页面或视图),这些View之间可能有内在联系,根据业务需要,可以一级一级向深处的跳转,当前的View上发生点儿什么事儿,就可能会产生一个新的View或返回之前的页面。

2 多页面切换动画

(1)原理:首先页面切换动画目前已知只适用于“隐藏法”的页面切换动画,通过改变属性visible、opacity等的值调用PropertyAnimation动画,或者定义若干个状态,当状态State变化时调用transition中定义的动画;
QML页面切换 可以使用动画控制每个页面的宽度与透明度从而控制页面的平滑切换;
(2)StackView、SwipeView等自带页面切换平滑过渡动画;

3 多个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文件中定义的对象;

参考

1、QtQuick多页面切换、多页面切换动画、多个qml文件数据交互
2、Qt Quick之StackView详解(1)
3、Qt5.7.0的QML实现SwipeView

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38880380/article/details/103836315

智能推荐

【若泽大数据实战第一天】大数据测试平台搭建_dhl13848的博客-程序员秘密

若泽大数据测试平台环境搭建一、介质需求:虚拟机:VMwareWorkstation14.1.1.28517大小:465.2MB操作系统:CentOS-6.5-x86_64-bin-DVD1.iso大小:4.16GB二、测试环境搭建:1、虚拟机安装:打开VMware Workstation Pro 点击:''下一步''勾选'...

STM32基础知识之串口通信协议_stm32串口缓存有多大_paradox_j的博客-程序员秘密

本文主讲串口通信协议。串口的底层知识在这里就不提了。只要明白串口的硬件缓存允许收发一次大小都是一字节(比如0xAA),而由串口多次发送的数据的多个字节组成了一帧数据,这帧数据被缓存在了软件定义的一个数组中。一帧数据的典型格式如下第一次发送的数据有时可以被作为帧头来使用。其内容固定,被用作识别新一帧数据的开始。而中间的若干数据字节则是用户想要发送的数据。帧尾则是被用来识别一帧数据的发送结束。...

Frp内网穿透,远程办公,奶妈级教程_手机通过frp远程linux电脑_king config的博客-程序员秘密

Frp内网穿透,进行远程办公,实现手机访问异地电脑前言:事情是这样的,天气逐渐转冷,晚上下学后不想在背着笔记本迎着冷风负重回家,又苦于突然心血来潮,想要学习(手动狗头),但是学习的环境网络与家中的不一样(懒),于是就想到如何远程连接教室的电脑,在家用设备进行远程操作。采用第三方软件例如TeamViewer,向日葵。但是想要稳定持久是需要付费的,显然这对于穷小子来说是个真实伤害,直接pass!采用其他第三方软件例如,qq、钉钉。 操作环节繁琐,极不稳定,pass!使用蒲公英VPN软件进行

w3wp.exe狂占内存_宸路的博客-程序员秘密

<br />来自:http://zhanghuibo2000.blog.163.com/blog/static/5668232020096102372060/<br /> <br />先了解此进程一些信息<br />进程文件: W3wp 或者 W3wp.exe<br />进程名称: ISS Application Pool Process<br /> <br />描述:<br />W3Wp.exe是ISS工具的一部分。<br /><br />出品者: Microsoft<br />属

kendo grid Hierarchy_weixin_30315435的博客-程序员秘密

Hierarchy grid中不能使用下面的这段代码,会造成传值传不过来,把下面的代码注释,不用models,直接用form表单传值就行,暂时没搞明白为什么 //parameterMap: function (options, operation) { // if (operation !== "read" &amp;&amp; options.models...

工作流引擎activiti7 简介_activiti expression delegateexpression_会飞的鱼318的博客-程序员秘密

工作流引擎activiti7 简介简介Activiti 是由 jBPM 的创建者 Tom Baeyens 离开 JBoss 之后建立的项目,构建在开发 jBPM 版本 1 到 4 时积累的多年经验的基础之上,旨在创建下一代的 BPM 解决方案。Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于Java的超快速、超稳定的 BPMN2.0

随便推点

bzoj 3757 苹果树(树上莫队)____fouzhe的博客-程序员秘密

题目链接3757: 苹果树Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1674  Solved: 550[Submit][Status][Discuss]Description    神犇家门口种了一棵苹果树。苹果树作为一棵树,当然是呈树状结构,每根树枝连接两个苹果,每个苹果都可以沿着一条由树枝构成的路径连到树根,

关于Servlet的生命周期和线程安全_servlet概念的理解;生命周期、线程安全问题、接口相关类型、体系结构<区别>_fwwdn的博客-程序员秘密

Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由其运行的WEB容器负责的,具体是指Servlet实例化,初始化,处理请求,最后销毁的过程。  当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servle

oracle按字符串长度分情况左补齐0_oracle 字符补齐_roamer314的博客-程序员秘密

左补齐day_time字段,凑成6位数字update TAXI_CASH_201608 set day_time=CONCAT(SUBSTR('00000' , LENGTH(day_time)) , day_time)

剑指Offer-斐波那契数列_gaoyueace的博客-程序员秘密

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。注:n&lt;=39初步解题思路:一看到斐波那契数列,即F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)。第一想法肯定是递归。(但是要考虑到会不会溢出,注:递归为什么会导致栈溢出呢?操作系统会给每个进程分配一个最大上限的堆栈空间。栈为先进后出,递归则先压入的数据一直不能...

支持3D动效的窗口管理器——Mutter_xieyan0811的博客-程序员秘密

mutter是metacity窗口管理器的支持3D动画效果的分支,它的动画由clutter库实现,它支持窗口的透明,扭曲,窗口内容变化中的动画效果……

C语言中申请内存的几种方式_c申请那日村[email protected] by step的博客-程序员秘密

一、C语言跟内存分配方式&amp;lt;1&amp;gt;从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.&amp;lt;2&amp;gt;在栈上创建在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.&amp;lt;3&amp;gt;从堆上分配,...

推荐文章

热门文章

相关标签