QML基础语法七

模型视图代理

1. 模型:数据及其结构,多种QML创建模型
2. 视图:显示数据容器,数据可以通过列表或表格的形式显示
3. 委托:控制数据如何在视图中显示,委托获取、封装了模型中每个数据,需要通过委托才能访问到数据
4. 创建方法:
将视图的model属性绑定到一个模型类型,将delegate属性绑定到一个组件或其他兼容的类型
例子:ListViewde model用来提供数据,委托delegate设置数据的显示方式,ListView使用ListElement添加数据
Item{width:100;height:100ListModel{id:myModelListElement{type:"Dog";age:8}ListElement{type:"Cat";age:5}}Component{id:MyDelegateText{text:type+","+age;font.pointSize:12}}ListView{anchors.fill:parentmodel:MyModeldelegate:myDelegate}}

1.数据模型

QUick的数据模型主要包含在QtQml.Model中,还有个基于XML的QtQml.XmlListModel
使用这些模型需要导入 import QtQml.Models
使用XML类型的导入 import QtQml.XmlListModel
使用表格类型的需要import Qt.labs.qmlmodels
使用Repeater可以将模型中的数据在定位器positioners中进行布局和显示
整数作为 模型,数量不能超过100 000 000

例子

Item{Component{id:itemDelegateText{text:"Iam item number:"+index}}ListView{anchors.fill:parentmodel:5delegate:itemDelagate}}

2.ListModel

    包含ListElement 存储数据使用count属性获取数量追加 append() 插入insert()、移动move()、移除remove()、获取get()、替换set()、清空clear()一些方法接受字典类型为参数,被模型自动转为ListElement对象使用setProperty()修改给定索引位置的ListElement属性值ListElement在ListModel中定义;没有固定属性

例子:存储水果信息,

ListModel包含三个数据项,有三个ListElement表示,每个ListElement有三个角色name、cost、attributes
attributes使用列表数据
使用ListView展示模型,指定model、delegate;
使用Component内敛组件作为委托

 import QtQuickItem{width:300;height:300;ListModel{id:fruitModelListElement{name:"Apple";cost:2.54attributes:[ListElement{description:"Deciduous"}]}ListElement{name:"Orange";cost:2.31attributes:[ListElement{description:"Citrus"}]}ListElement{name:"Banana";cost:1.54attributes:[ListElement{description:"Tropical"}ListElement{description:"Seedless"}]}}Component{id:fruitDelegateItem{width:200;height:50Text{id:nameField;text:name}Text{text:'$'+cost;anchors.left:nameField.right}Row{anchors.top:nameField.bottom;spacing:5Text{text:"Attributes:"}Repeater{model:attributesText{text:description}}}MouseArea{anchors.fill:parentonClicked:fruitModel.setProperty(index,"cost",cost*2)       //使用index获取被单击的索引}}}ListView{anchors.fill:parentmodel:fruitModel;delegate:fruitDelegate}}

3.ObjectModel

    可将Qt Quick的可视化项目作为数据项显示到视图上ObjectModel不需要指定委托Delegate,自身包含了可视化的委托Delegate使用model的附加属性index获取数据项索引也提供了append、insert、move、remove、get、clear等

例子:

 import QtQuickimport QtQuick.Controlsimport QtQuick.LayoutsRectangle{widht:200;height:300;ObjectModel{id:itemModelRectangle{height:30;width:100;radius:5;color:"red"}Label{height:20;width:50;text:qsTr("标签按钮")}Button{height:20;width:50;text:qsTr("按钮控件")}Switch{checked:true}Rectangle{height:20;width:50border.width:3;color:"yellow"Text{text:qsTr("文本项目");anchors.centerIn:parent}}Frame{width:150ColumnLayout{anchors.fill:parentCheckBox{text:qsTr("E-mail")}CheckBox{text:qsTr("Calendar")}}}ScrollView{width:200;height:70Label{text:"ABC"font.pixelSize:90}}}ListView{anchors.fill:parentanchors.margins:5model:itemModelspacing:5}}

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

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

相关文章

创建Spring Boot项目及配置

目录 一、创建项目所需要的插件 1、安装插件 二、创建项目 三、创建项目所面临的常见问题。 1、IDEA不能识别 2、无效的发行版本 3、确认jar包是否下载成功 一、创建项目所需要的插件 1、安装插件 首先需要在IDEA插件里面搜索Spring,选择Spring Boot Helper…

如何去掉溢出内容的overflow属性滚动条

在CSS中,如果你设置了overflow属性为auto或scroll,并且内容确实超出了容器的大小,那么浏览器会自动显示滚动条。但是,如果你想在某些情况下隐藏这些滚动条,有几种方法可以尝试,但请注意,这些方法…

政安晨:【Keras机器学习示例演绎】(四十一)—— 使用预先训练的词嵌入

目录 设置 简介 下载新闻组 20 数据 让我们来看看这些数据 清洗数据并将数据分成训练集和验证集 创建词汇索引 加载预训练的词嵌入 建立模型 训练模型 导出端到端模型 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与…

Python批量修改图片文件名中的指定名称

批量处理图像时,图片名有时需要统一,本教程仅针对图片中名如:0001x4.png,批量将图片名中的x4去除,只留下0001.png的情况。 如果想要按照原图片顺序批量修改图片名,参考其它博文:按照原顺序批量…

Vue中常用指令

Vue中的常用指令 Vue中的常用指令内容渲染指令条件渲染指令事件绑定指令内联语句事件处理函数给事件处理函数传参 属性绑定指令列表渲染指令v-for中的key 双向绑定指令 Vue中的常用指令 概念:指令 是 Vue 提供的带有 v- 前缀 的 特殊 标签属性。Vue 会根据不同的【…

飞天使-k8s知识点30-kubernetes安装1.28.0版本-使用containerd方式

文章目录 安装前准备containerd 配置内核参数优化安装nerdctl以上是所有机器全部安装开始安装初始化,这步骤容易出问题!安装flannel 结果展示 安装前准备 内核升级包的md5,本人已验证,只要是这个md5值,放心升级 1ea91ea41eedb35c…

MySQL ——变量的定义和使用

DDL和DML CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 学号,createDate datetime DEFAULT NULL,userName varchar(20) DEFAULT NULL,pwd varchar(36) DEFAULT NULL,phone varchar(11) DEFAULT NULL,age tinyint(3) unsigned DEFAULT NULL,sex char(2) …

硬性清空缓存的方法

前端发布代码后,我们是需要刷新页面再验证的。有时候仅仅f5 或者ctrlshiftdelete快捷键仍然有历史缓存,这时可以通过下面的方法硬性清空缓存。 以谷歌浏览器为例,打开f12,右键点击刷新按钮,选择【清空缓存并硬性加载】…

JavaScript异步编程——07-Promise实例的方法【万字长文,感谢支持】

Promise 实例的方法简介 Promise 的 API 分为两种: Promise 实例的方法(也称为:Promis的实例方法) Promise 类的方法(也称为:Promise的静态方法) Promise 实例的方法:我们需要实…

PyTorch机器学习实现液态神经网络

大家好,人工智能的发展催生了神经网络这一强大的预测工具,这些网络通过数据和参数优化生成预测,每个神经元像逻辑回归门一样工作。结合反向传播技术,模型能够根据损失函数来调整参数权重,实现自我优化。 然而&#xf…

等保测评技术方案

等保,即“网络安全等级保护”,是中国实施的一项信息安全保护制度,旨在对不同重要性的信息和信息系统实行分等级保护,保障国家安全、社会秩序以及公共利益。等保技术方案是指为了达到国家网络安全等级保护标准要求,针对…

Mock.js 问题记录

文章目录 Mock.js 问题记录1. 浮点数范围限制对小数不起效2. increment 全局共用 Mock.js 问题记录 最新写网页的时候引入了 Mock.js 来生成模拟数据; Mock使用起来很方便,具体可以参考 官网 很快就能上手, 但是这个项目最近一次提交还是在2…

SCPI控制

SCPI 定义:Standard Commands for Programmable Instruments,可编程仪器的标准命令,是一个独立于硬件的纯粹的软件标准,字符串可通过任何仪器接口进行传送。 SCP命令实际是通过ASCII字符串形式在命令与仪器进行交互。命令一般由一系列的关键字构成,有的还需要包括参数,…

oracle 修改dmp文件导入导出文件位置(DATA_PUMP_DIR)

查询dmp导入、导出文件所在位置: SELECT * FROM DBA_DIRECTORIES T WHERE T.DIRECTORY_NAME DATA_PUMP_DIR; 2.修改DATA_PUMP_DIR配置的文件位置(直接在数据库执行脚本即可): create or replace directory DATA_PUMP_DIR as /opt/tools/oracle/dmpFile/;或者通过…

誉天教育近期开班计划

云计算HCIE 晚班 2024/5/13 大数据直通车 周末班 2024/5/25 数通直通车 晚班 2024/5/27 云服务HCIP 周末班 2024/6/1 云计算HCIP 周未班 2024/6/1 RHCA442 晚班 2024/6/17 周末班:周六-周日9:00-17:00晚 班:周一到周五19:00-21:30注&…

@Test测试Mapper接口报错java.lang.NullPointerException

Test测试Mapper接口报错java.lang.NullPointerException 报错原因:没有注入依赖 解决方法:在测试类上面添加SpringBootTest

道可云元宇宙每日资讯|中国联通推出车联网AI大模型

道可云元宇宙每日简报(2024年5月9日)讯,今日元宇宙新鲜事有: 上海年内将推出10个以上文旅元宇宙示范项目 上海将聚焦数字文化、智慧旅游、虚拟演艺三大场景,开展文旅元宇宙重大应用场景“揭榜挂帅”,推动…

【退役之重学Java】如何保证消息队列的高可用?

通过上一篇博客,我们知道,虽然引入消息队列可以优化系统的性能、稳定性和可维护性,提升系统的整体效率和用户体验。但是也需要注意其可能带来的复杂性、一致性、可用性、延迟、数据一致性等方面的缺点。 RabbitMQ 一、RabbitMQ 普通集群模式 …

winform图书销售管理系统+mysql

winform图书销售管理系统mysql数据库说明文档 运行前附加数据库.mdf(或sql生成数据库) 功能模块: 管理员:ttt 123 登陆可以操作我的 个人信息 修改密码 用户信息 添加删除用户 图书 添加删除图书信息 购物车 购买订单信息 充值 退出账户 …

【SRC实战】遍历手机号给全站用户发放优惠券

挖个洞先 https://mp.weixin.qq.com/s/m8ULZ52p1q_mKrCRnaI_7A “ 以下漏洞均为实验靶场,如有雷同,纯属巧合 ” 01 — 漏洞证明 一、遍历手机号 “ 没有验证码二次校验的漏洞如何扩大危害?” 1、输入手机号码,领取优惠券场景…