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.4Window {visible: truewidth: 1400height: 800title: qsTr("Hello World")property var m_source:setLayer()function setLayer(index){switch(index){case 0:m_source = loginComponetbreakcase 1:m_source = modifyIDComponetbreakcase 2:m_source = modifyPasComponetbreakcase 3:m_source = sqlComponetbreakdefault:m_source = loginComponetbreak}return m_source}QMLreadini{id:_QMLreadini}MainToolBar{id: _toolbaranchors.top:parent.topwidth: parent.widthheight: 60onChangeWidget: {setLayer(_index)}}Component {id: loginComponetLogin{id:_loginanchors.centerIn: parent}}Component {id: sqlComponetSqlLite{id:_SqlLite}}Component {id: modifyIDComponetModifyID{id:_ModifyIDanchors.centerIn: parent}}Component {id: modifyPasComponetModifyPas{id:_ModifyPasanchors.centerIn: parent}}Flickable{anchors.top: _toolbar.bottomanchors.bottom: parent.bottomanchors.topMargin:  30anchors.left: parent.leftanchors.right: parent.rightRectangle{id: mainRectanchors.fill: parentcolor: "transparent"Loader {id:                 deferedloadanchors.top: mainRect.topanchors.left: mainRect.leftanchors.right: mainRect.rightsourceComponent:    m_source}}}}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区块链学习记录01

在学习过程中所遇到的问题,及其解。 Q:区块链中分布式账本的存在,让所有人都知道资金的变动吗? A:区块链中的分布式账本确实让参与网络的所有节点都能够了解账户之间的资金变动。这是因为区块链是一个分布式数据库,其中包含着所…

Java 基础面试题

文章目录 重载与重写抽象类与接口面向对象a a b 与 a b 的区别final、finalize、finallyString、StringBuild、StringBuffer位运算反射 重载与重写 重载:是在同一个类中,方法名相同,方法参数类型,个数不同,返回类型…

苹果不会在WWDC 2024中推出任何搭载M4芯片的Mac电脑

虽然苹果公司已在上月推出了首搭 M4 芯片的 iPad Pro,不过彭博社的马克・古尔曼在最近的实时通讯中透露苹果公司不会在即将进行的 WWDC 2024 开发者大会中推出任何搭载 M4 芯片的 Mac 电脑(不会推出任何硬件产品)。 此前报道,苹果…

linux命令别名与shell函数

# 修改网卡配置 alias vinetwork"vi /etc/sysconfig/network-scripts/ifcfg-ens33" 1. 方法和调用在同一个文件 # 定义shell函数,返回值通过$?获取 function say_hello(){ echo "hello shell" return 1 } # 使用shell函数 say_hello # 执行脚本后接收返…

源代码防泄密是什么?

1.源代码防泄密的概念 源代码防泄密是指采取一系列措施和技术手段,以防止源代码被未授权的访问、复制、传播或篡改,从而保障软件的知识产权和系统的安全性。 2.源代码防泄密的重要性 源代码是软件的核心部分,一旦泄露,可能会被…

fastjson序列化对象后属性变更问题

使用fastjson进行JSON序列化存储到数据库后,发现JSON字符串“莫名其妙地”多了一些属性。 public class MyClass {// boolean 类型的属性private boolean isActive;private boolean valid;// int 类型的属性private int id;// 默认构造器public MyClass() {}// 带有…

前端框架之 MVVM

MVVM vue 是典型的 MVVM 框架,v-model 实现了 VM 部分 MVVM 的理解 M:模型层、数据层,简单理解就是定义在 data 中的变量 V:视图层,就是浏览器展示的页面 M > V:数据的改变,需要同步更新…

公寓远程抄表系统:智能管理方法新的篇章

1.界定和功能 公寓远程抄表系统是一种前沿的自动化控制,它允许物业管理管理人员在远离现场部位收集和分析公寓里的电力能源使用数据,似水、电、气等。根据集成传感器、物联网产品和云计算,系统能实时检测并记录公寓的能耗状况,大…

OCR行驶证识别介绍

OCR行驶证识别是一种基于光学字符识别(OCR)技术的应用,专门用于识别机动车行驶证上的关键字段信息。以下是关于OCR行驶证识别的详细解释: 定义与原理 OCR行驶证识别通过扫描或拍摄行驶证图片,利用计算机视觉和模式识别…

可视化数据科学平台在信贷领域应用系列三:特征组合

现代各企业都提倡“降本增效”,所以越来越多优秀的工具诞生了。若想在特征加工这块工作上提升效率,建模人员也能有更多时间“偷懒”,都 “Sora”时代了,为啥不巧用工具呢?RapidMiner在信贷风控特征加工组合中是一把利器…

17 - 项目员工 I(高频 SQL 50 题基础版)

17 - 项目员工 I select-- round(sum(e.experience_years)/count(*),2) p.project_id,round(avg(e.experience_years),2) average_years from Project p left join Employee e on p.employee_ide.employee_id group by p.project_id;

智能座舱车载数字人解决方案,低资源占用

随着智能汽车的快速发展,人们对汽车的需求已经超越了单纯的交通工具定义,而是更加追求个性化、智能化的出行体验。在这样的背景下,美摄科技凭借其卓越的技术实力和创新能力,推出了面向企业的智能座舱车载数字人解决方案&#xff0…

Qt Creator常用的快捷键和常用功能

常用快捷键 新建项目,ctrl n 运行项目,ctrl r 构建项目,ctrl b 改变编辑器界面字体显示比例大小,ctrl 鼠标滚轮 对齐代码,ctrl a; ctrl i 跳转到上一行,ctrl shift enter 跳转到下一行,…

nn.GRU和nn.GRUCell区别

nn.GRU和nn.GRUCell在PyTorch中都是用于实现门控循环单元(Gated Recurrent Unit, GRU)的模块,但它们之间存在一些区别: 输入维度: nn.GRU是一个完整的GRU层,它接受一个3D输入张量(batch_size, seq_length, input_size),输出也是一个3D张量(batch_size, seq_length, hidden_si…

Error Domain=com.google.admob Code=1 “Request Error: No ad to show.“

Error Domaincom.google.ads Code1 "Request Error: No ad to show." UserInfo{NSLocalizedDescriptionRequest Error: No ad to show., NSLocalizedFailureReasonRequest Error: No ad to show.}啊,家人们,同事注册谷歌开发者后,给…

PhpStorm 2024 激活码 - JetBrains 高效智能PHP IDE

各位程序员,每天敲代码真的需要一款好用的 IDE,大名鼎鼎的 JetBrains 值得信赖!PHP 开发看过来,PhpStorm 个人版首年订阅 618 限时特惠 7.1 折,有需要的朋友一定不要错过! PhpStorm 汇集了众多效率功能和集…

Kaggle——Deep Learning(使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络)

1.单个神经元 创建一个具有1个线性单元的网络 #线性单元 from tensorflow import keras from tensorflow.keras import layers #创建一个具有1个线性单元的网络 modelkeras.Sequential([layers.Dense(units1,input_shape[3]) ]) 2.深度神经网络 构建序列模型 #构建序列模型 …

排序题目:多数元素

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题:多数元素 出处:169. 多数元素 难度 2 级 题目描述 要求 给定…

Windows系统的——终端命令行进入文件夹、打开程序或文件、返回路径、切换磁盘、查看路径包含的所有内容和配置环境变量操作

一、Windows系统的一些基础操作 Windows系统的一些基础操作(通过运行命令方式打开)https://blog.csdn.net/xiaochenXIHUA/article/details/122782021?ops_

GLM-4-9B VLLM 推理使用;openai接口调用

参考: https://huggingface.co/THUDM/glm-4-9b-chat 直接运行vllm后端服务: from transformers import AutoTokenizer from vllm import LLM, SamplingParams# GLM-4-9B-Chat-1M # max_model_len, tp_size