QML进阶--Loader实现组件的动态切换

QML动态加载与切换

在QML学习和开发过程中,看到Loader的官方介绍之后,发现Loader就是用来动态加载一个qml或者component的容器。

有一个问题在我脑海里冒了出来:loader加载一个qml或者一个组件,完全可以通过设置这个qml或者组件的visible为true或者false进行显示,那么Loader的强大之处到底在哪里呢?

带着这个问题,浏览了一些资料和代码,最终发现了Loader的一个强大之处–可以对整个组件或者qml进行整体的动态切换,写起来比较简单明了。发现这个功能后,本人就动手用Loader去实现动态切换。

1、Loader的基本参数

关于Loader的基本参数,大家可以通过在qml代码中选中Loader,按F1键查看官方的帮助文档,这里就不多介绍了。
简单介绍一个Loader 加载组件的两种方法:
1.1、加载qml文件

Loader {
   
   
	id:loader
}
loader.source = "MaskWin.qml"

1.2 加载component

Loader {
   
   
	id: loader
}
// 创建一个component
Component {
   
   
	id:testComponent
	...
}

loader.sourceComponent = testComponent;

2、动态切换效果图

实现功能:点击按钮,窗口动态的出现和消失。
在这里插入图片描述

3、功能设计思路

1、做一个按钮,用来触发窗口切换
2、创建一个掩码窗口,最终生成一个qml文件
3、创建一个Loader, Loader中添加两种动画,一个是进入,一个是出去。
4、Loader指定qml,触发动画。

4、代码

在这里插入图片描述

LoaderSturdy.qml

import QtQuick 2.0
import QtQml 2.12
import QtQuick.Window 2.12

Window {
   
   
    id: rootWin
    width: 1000
    height: 1000
    color: "blue"
    visible: false

	// 创建一个背景为绿色的窗口
    Rectangle {
   
   
        id: background
        anchors.fill:parent
        color: "green"
    }
	
	// 创建一个loader对象,包含了两种动画,一个是进入,一个退出
    Loader {
   
   
        id: loader
        NumberAnimation {
   
   
            id: showMask
            target: loader.item  // 动画指定的对
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值