QtQuick多页面切换、多页面切换动画、多个qml文件数据交互
一、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文件中定义的对象;
QtQuick多页面切换、多页面切换动画、多个qml文件数据交互的更多相关文章
- H5单页面手势滑屏切换原理
H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...
- JQuery实现页面企业广告图片切换和新闻列表滚动效果
最近用到一个页面上图片左右切换和新闻列表滚动呈现的效果,整理如下: 前段代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...
- .net(C#)在vs2010版本下的MVC如何配置才能切换静态页面(html)
由于vs2010用的人比较多,虽然建mvc项目vs2010可能还不成熟,但鉴于每个人的成长有限,每个地方的资源有限,最主要的是为了解决问题,所以先不管那么多了. 用vs2010为公司网站建站,要求js ...
- activity+fragment多次切换出现页面空白问题
刚上手一个项目 懒的用viewpager+fragment模式,尽管在后面的项目中还是用到viewpager+fragment.先说说问题,多次切换fragment的时候页面出现空白,刚开始以为传递的 ...
- MUI底部导航切换子页面
1.登陆页面进入之后,进入到main页面,main页面只有一个底部导航,然后引入子页面进行渲染. <nav class="mui-bar mui-bar-tab" id=&q ...
- 微信小程序开发--路由切换,页面重定向
这段时间开发了一个微信小程序,虽然小程序的导航API 官方文档写得很详细,但是在具体开发过程中还是会遇到很多不明白,或者一时转不过弯的地方. 1.页面切换传参,参数读取 1.1 wx.navigat ...
- vue切换路由页面内容没有重载
项目中遇到这样一个问题: 在一个地方填了一个申请的表单,需要在另一个页面的列表上显示出来这条申请的数据,但是由于vue的缓存,在切换路由时列表上并没有及时更新数据,解决方法如下: vue路由切换时页面 ...
- MUI 图标筛选切换(父页面传值子页面)
1 父页面: index.html <li class="tab_layout"> <a href="javascript:;" clas ...
- 16-Flutter移动电商实战-切换后页面状态的保持AutomaticKeepAliveClientMixin
底栏切换每次都重新请求是一件非常恶心的事,flutter 中提供了AutomaticKeepAliveClientMixin 帮我们完成页面状态保存效果. 1.AutomaticKeepAliveCl ...
随机推荐
- MTK 音量加减键修改为默认控制媒体音量
frameworks/base/media/java/android/media/AudioService.java: private int getActiveStreamType(int sugg ...
- 虚拟机---vmmare15安装centos7.4
第一步:下载centos7的镜像iso文件:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything- ...
- unity 5.3 以后加载场景
记录下官方建议的加载场景的方法: StartCoroutine(LoadYourAsyncScene()); IEnumerator LoadYourAsyncScene() { // The App ...
- Android学习:简易图片浏览
这个例子学习混合使用XML布局和代码来控制UI,习惯上把变化小.行为固定的组件放在XML布局文件中管理,而那些变化较多.行为控制复杂的组件则交给Java代码来管理. 先在布局文件中定义一个线性布局容器 ...
- TimeUnit类中的sleep() 和Thread.sleep()
TimeUnit是什么? TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段 ...
- [ICPC 北京 2017 J题]HihoCoder 1636 Pangu and Stones
#1636 : Pangu and Stones 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 In Chinese mythology, Pangu is the fi ...
- MySQL 5.7新特性之generated column
MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...
- docker-compose & docker 镜像/加速
docker-compose: http://sanwen.net/a/nuwruoo.html docker加速: http://guide.daocloud.io/dcs/daocloud-915 ...
- git checkout --theirs(ours)
假设原来有文件A,程序员甲把A进行了完全的重写,而甲在自己的branch工作的同时,他的同事程序员乙则对A进行了一个优化.这样,当甲想要merge的时候,A文件就有很多的冲突,可能多达几百行. 这时候 ...
- GitLab使用公钥SSH key登录
SSH key提供了一种与GitLab通信的方式,能够不输密码就进行版本控制 第一步,检查SSH key是否存在 如果存在则把SSH Key放到GitLab上,如果不存在则生成新的SSH Key,再放 ...