QT:QML中使用Loader加载界面

 

目录

一.介绍

二.实现

三.效果展示

四.代码


一.介绍

在QML中使用Loader加载界面,可以带来诸多好处,如提高应用程序的启动速度、动态地改变界面内容、根据条件加载不同的组件、更有效地使用内存以及帮助分割应用逻辑等

1.延迟加载:QML Loader允许开发者在需要时才加载组件,而不是在应用程序启动时一次性加载所有组件。这样可以加快应用程序的启动时间,因为它只需要初始化用户当前需要看到的部分。

2.动态内容:Loader可以在运行时加载不同的QML文件或组件,这样可以根据用户的操作或应用程序的状态来改变界面的内容。

3.条件加载:Loader可以根据条件判断来加载不同的组件。例如,你可以基于设备的屏幕尺寸或者是操作系统来加载不同的用户界面组件。

4.内存管理:由于 Loader只加载当前需要的组件,因此可以更有效地使用内存。不需要的组件可以被卸载,这样那些内存就可以用于其他目的。

5.分割应用逻辑:使用 Loader 可以帮助你把应用程序的不同部分分割成小的、可管理的单元,这样有助于维护和更新应用程序。

二.实现

1.定义了一个名为m_source的变量,它是一个var类型的变量,用于存储当前选中的组件。通过调用setLayer函数,可以根据传入的索引来设置m_source的值。

2.定义了一个名为onChangeWidget的函数,当工具栏中选中不同的选项时,会调用这个函数,并传入当前选中的索引。这个函数会调用setLayer函数,来设置当前选中的组件。

3.组件可以在其他地方被引用,并在运行时动态加载。loginComponet被引用为m_source的一个值,并通过Loader组件动态加载。在Login组件被加载后,可以通过_login来访问该组件的属性和函数。

4.在Flickable组件中,使用了一个Loader组件,用于加载当前选中的组件。当m_source的值发生变化时,Loader组件会自动加载相应的组件。

三.效果展示

点击左上角不同按钮,切换界面

四.代码

import QtQuick 2.7
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 1400
    height: 800
    title: qsTr("Hello World")

    property var m_source:setLayer()


    function setLayer(index){
        switch(index){
        case 0:
            m_source = loginComponet
            break
        case 1:
            m_source = modifyIDComponet
            break
        case 2:
            m_source = modifyPasComponet
            break
        case 3:
            m_source = sqlComponet
            break
        default:
            m_source = loginComponet
            break
        }
        return m_source
    }

    QMLreadini{
        id:_QMLreadini
    }

    MainToolBar{
        id: _toolbar
        anchors.top:parent.top
        width: parent.width
        height: 60
        onChangeWidget: {
            setLayer(_index)
        }
    }

    Component {
        id: loginComponet
        Login{
          id:_login
          anchors.centerIn: parent
        }
    }

    Component {
        id: sqlComponet
        SqlLite{
            id:_SqlLite
        }
    }


    Component {
        id: modifyIDComponet
        ModifyID{
            id:_ModifyID
             anchors.centerIn: parent
        }
    }

    Component {
        id: modifyPasComponet
        ModifyPas{
            id:_ModifyPas
             anchors.centerIn: parent
        }
    }


    Flickable{
        anchors.top: _toolbar.bottom
        anchors.bottom: parent.bottom
        anchors.topMargin:  30
        anchors.left: parent.left
        anchors.right: parent.right
        Rectangle{
            id: mainRect
            anchors.fill: parent
            color: "transparent"

            Loader {
                id:                 deferedload
                anchors.top: mainRect.top
                anchors.left: mainRect.left
                anchors.right: mainRect.right
                sourceComponent:    m_source
            }
        }
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/674684.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态规划2:面试题 08.01. 三步问题

动态规划解题步骤: 1.确定状态表示:dp[i]是什么 2.确定状态转移方程:dp[i]等于什么 3.初始化:确保状态转移方程不越界 4.确定填表顺序:根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接:面试…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第34课-进门播放欢迎光临的音效

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第34课-进门播放欢迎光临的音效 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智…

R语言绘图 --- 柱状图(Biorplot 开发日志 --- 3)

「写在前面」 在科研数据分析中我们会重复地绘制一些图形,如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包(Biorplot),用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。 相关链接…

GITLAB常见问题总结

Troubleshooting GitLab Pages administration (FREE SELF) 原文地址 stage: Plan group: Knowledge info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/…

MWORKS车辆动力性经济性与热管理联合应用篇

一、引言 随着科技的飞速发展、环保意识的日益增强以及国家政策的大力支持,新能源汽车已经不再是遥不可及的未来科技,而是逐步走进千家万户,成为我们日常生活中不可或缺的一部分。然而,每到冬季的来临,纯电动汽车面临…

Linux shell编程学习笔记56:date命令——显示或设置系统时间与日期

0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。在收集的信息中,应该有一条是搜索信息的时间。 1. date命令 的功能、格式和选项说明 我们可以使用命令 date --help 来查看 d…

巧用Jmeter Debug sampler获取变量信息

Jmeter Debug sampler介绍 Jmeter Debug sampler 可以帮助我们解决如下问题: debug参数化的变量取值是否正确 debug正则表达式提取器(或json提取器)提取的值是否正确 查看 JMeter 属性 具体使用方法 前提条件:添加查看结果树…

【Python】【matLab】模拟退火算法求二元高次函数最小值

一、目标函数 求二元高次函数的最小值。目标函数选择: 用于测试算法的简单的目标函数: 二、Python代码实现 import numpy as np# 目标函数(2变量) def objective_function(x):return x[0] ** 2 2 * x[0] - 15 4 * 4 * 2 * x[…

【开发心得】三步本地化部署llama3大模型

目录 第一步:启动ollama 第二步:启动dify 第三步:配置模型(截图) 最近llama3很火,本文追击热点,做一个本地化部署的尝试,结果还成功了! 当然也是站在别人的肩膀上&…

DevOps中如何高效开展手工和自动化测试

在快速发展的软件开发行业中,DevOps实践已经成为提高软件交付速度和质量的关键。DevOps是一种文化和实践的集合,旨在促进开发(Dev)和运维(Ops)团队之间的协作和通信。测试作为DevOps生命周期中的重要组成部…

安装打开 ubuntu-22.04.3-LTS 报错 解决方案

安装打开 ubuntu-22.04.3-LTS 报错 解决方案 WslRegisterDistribution failed with error: 0x800701bc Error: 0x800701bc WSL 2 ??? https://aka.ms/wsl2kernel 1、确保【windows 功能】打开了【虚拟机】。 键盘上按 WIN R 打开【运行】,输入 【 control 】&…

树莓派4B 学习笔记2:GPIO介绍_第一个Python程序_点灯

今日开始学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) GPIO介绍_第一个Python程序_Python点灯 文章提供测试代码讲解、完整代码贴出、测试效果图 目录 树莓派4B 引脚与外设图: 树莓派常用命令: 第一个…

今日好料推荐(ARM嵌入式)

今日好料推荐(ARM嵌入式) 参考资料在文末获取,关注我,获取优质资源。 给我留言,会帮大家寻找需要的资料。 ARM 嵌入式系统 嵌入式系统在现代电子设备中扮演着至关重要的角色,从智能手机到工业自动化&am…

【网络技术】【Kali Linux】Wireshark嗅探(十六)TLS(传输层安全协议)报文捕获及分析

往期 Kali Linux 上的 Wireshark 嗅探实验见博客: 【网络技术】【Kali Linux】Wireshark嗅探(一)ping 和 ICMP 【网络技术】【Kali Linux】Wireshark嗅探(二)TCP 协议 【网络技术】【Kali Linux】Wireshark嗅探&…

springboot undertow 文件上传文件过大异常

io.undertow.server.RequestTooBigException: UT000020 Connection terminated as request was larger than xxxx 修改yaml文件中关于undertow的配置项 server:undertow:# HTTP POST请求最大的大小# 默认0,无限制max-http-post-size: ${SERVER_UNDERTOW_MAX_HTTP_…

Jetson Nano集成探索大象机器人myAGV上的 SLAM 算法!

引言 大家好,最近新入手了一台myAGV JN这是elephant robotics在myAGV升级后的版本。最近有对SLAM相关知识感兴趣,想深入了解一些关于ROS中SLAM的一些算法和规划,跟据官方提供的gitbook,主要使用到了gmapping算法来建图导航实现功能…

计算机类专业应该怎么选学校和方向?优先选这些!

👆点击关注 获取更多编程干货👆 高考季临近,不少有意向报考计算机专业的同学在为院校和细分专业的选择而苦恼,以下是一些建议,希望能帮到大家! 01 选校建议 在选择计算机科学(CS&#xff09…

第二证券炒股知识:股票内盘外盘代表什么意思?

股票内盘是主动性卖盘,表明以买入价成交的股数,持股的投资者主动以等于或是低于买一、买二、买三、买四、买五的价格卖出手中持有的股份,买入成交数量核算参加内盘。 股票外盘是主动性买盘,表明以卖出价成交的股数,场…

Vuex 的安装与配置

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介Vuex 的安装与配置1. 安装 Vuex使用 npm 安装使用 yarn 安装 2. 配置 Vuex创建和配置 store将 store 注入到 Vue 实例中 3. 在组件中使用 Vuex访问 State提交 Mutation分发 Action使用 Getter 原理解析小结 ⭐ 写在最后 ⭐ 专栏简介…

2. MySQL 数据类型和存储引擎

文章目录 【 1. 数据类型 】1.1 数值类型1.1.1 整型1.1.2 小数1.1.3 数值类型的选择 1.2 日期和时间YEAR 年TIME 时间DATE 日期DATETIME 日期时间TIMESTAMP 时间戳日期和时间的选择 1.3 文本字符串CHAR 固定字符串、VARCHAR 可变字符串TEXT 文本ENUM 枚举SET 集合字符串类型的选…