QML基础语法2

函数

函数格式:

function关键字 函数名(参数名1:参数类型,参数名2:参数类型,...):返回值类型{}

其中:

  • 函数名必须以小写字符开头,后面驼峰
  • 可以有多个参数或者没有参数
  • 参数类型可以不写
  • 返回值类型也可以不写

如何调用:通过id点出来

举例:

Rectangle {id: rect//显示指定参数类型和返回值类型function getWidth(num1: int, num2: int): int {return num1 + num2;}//不显示指定function getHeight(num1, num2) {return num1 * num2;}//调用width: rect.getWidth(10, 20)height: rect.getHeight(1, 20)
}

信号

信号格式:

signal关键字 信号名(参数名1:参数类型,参数名2:参数类型...)

其中:

  • 信号名仍然要首字母小写,后面驼峰
  • 参数可以有多个或没有
  • 若有参数则参数类型必须要写
  • 同一个作用域内信号名要唯一,不能多个信号重名

举例:

Rectangle {id: rect2width: 100height: 50color: "red"//声明1个信号signal testSignal(num: int)
}

自动绑定信号的槽函数

定义一个信号号,同时可以定义一个自动绑定信号的槽函数

自己发出信号,自己接收信号然后处理

格式为:

on信号名(参数列表){}

其中:

  • 信号名的首字母要变成大写
  • 参数的个数可以少于信号的个数,也可以多于信号的参数
  • 参数不能加参数类型,只需要参数名

举例:

Rectangle {id: rect2width: 100height: 50color: "red"//声明1个信号signal testSignal(num: int)//on+信号名首字母大写//信号处理函数中打印这个参数onTestSignal: (num) => {print(num);}//槽函数参数可以没有,也可以多与信号// onTestSignal:(num1,num2)=>{//     print(num1);// }// onTestSignal:{//     //没有参数时,即忽略信号里的参数,不使用//     print("----");// }//点击这个矩形,发射信号MouseArea {anchors.fill: parentonClicked: rect2.testSignal(10)}}

属性改变信号处理器

自定义一个属性后,qml会自动生成这个属性改变的处理器(槽函数)

同样是自己发出属性改变信号,自己接受信号处理

格式:

on属性名Changed:{}

其中:

  • 属性名要变成大写开头

举例:

Rectangle {id: rect3width: 100height: 50color: "red"//声明属性numproperty int num: 10//自动生成的属性变化处理器onNumChanged: {print("num属性变化了,num:" + rect3.num)}//点击后修改这个属性,对应的处理器就会自己调用MouseArea {anchors.fill: parentonClicked: rect3.num++}
}

connect函数

可以 将自己的信号 连接到 在其他元素中定义的槽函数

自己发出信号,由其他对象接受信号进行处理

通常会在元素创建完成后Component.onCompleted中,将信号和槽函数进行连接

此方法连接信号和槽,对槽函数的名称没有要求

举例:

Rectangle {id: rect4width: 100height: 50color: "red"//定义信号signal testSignal(w: int)MouseArea {anchors.fill: parentonClicked: rect4.testSignal(rect4.width)}//通常在元素创建完成之后将信号与对应的槽函数进行连接Component.onCompleted: {//信号调用connect方法连接到其他元素中的槽函数rect4.testSignal.connect(rect5.doSomething)}
}
Rectangle {id: rect5width: 100height: 50color: "yellow"//定义槽函数function doSomething(w: int) {print("4号矩形的宽度是:" + w)}
}

Connections元素

可以 将其他元素中的信号自己的槽函数进行连接

Connections元素的写法:

Connections {//需要指定target,即连接谁的信号target: 某个元素的id//可以在Connections同时连接多个信号function on信号名(){}
}

槽函数格式为:

和普通函数一样,只是名称有要求

function关键字 on信号名(参数名1:参数类型,参数名2:参数类型,...):返回值类型

其中:

  • 信号名的首字母要变成大写

举例:

Rectangle {id: rect6width: 100height: 50color: "red"signal mySignal1(info: string)signal mySignal2()//点击发射信号MouseArea {anchors.fill: parentonClicked: {rect6.mySignal1("你好")rect6.mySignal2()}}
}
Rectangle {id: rect7width: 100height: 50color: "blue"//连接rect6中的信号Connections {//需要指定target,即连接谁的信号target: rect6//可以在Connections同时连接多个信号//连接rect6中的mySignal1信号function onMySignal1(info: string) {print(info)}//连接rect6中的mySignal1信号function onMySignal2() {print("响应rect2中的mySignal2信号")}}
}

注意connect函数Connections元素区别

  • 前者是将自己的信号连接其他元素的槽函
  • 后者是将自己的槽函数连接到其他元素中的信号 

基本数据类型

其中:

color,font,rect,point如何赋值:

property color c: "#FF112233" //ARGB,前面两位那个是透明度
property point p: Qt.point(50, 100)
property rect r: Qt.rect(50, 50, 100, 100)
property font f: ({family: "微软雅黑"
}) //js对象
property font ff: Qt.font({family: "微软雅黑",bold: true
})

枚举类型注意点:

  • 自定义的qml文件的名称需要首字母大写,定义的枚举无法在当前qml文件中使用和访问
  • 当前qml文件中只能使用其他qml文件中定义的枚举
  • 枚举名需要首字母大写,枚举值也要首字母大写
  • 访问格式:qml文件名.枚举类型名.枚举值

举例:

MyItem.qml文件中定义了枚举Week

Item {width: 100height: 100enum Week{Mon=1,Tue=2}
}

在另一个qml文件中使用

Rectangle{width:100    height:100//定义了一个属性,并赋枚举值property int week:MyItem.Week.Mon
}

其他类型

qml自带的或者自己定义的这些元素类型

Rectangle {width: 100height: 100//定义了一个属性,属性的类型是自己定义的元素property MyItem myitem: MyItem {width: 100}//定义了一个属性,属性的类型是qml自带的Buttonproperty Button btn: Button {text: "按钮"}
}

js对象

Rectangle {width: 100height: 100//js里的日期propertyvar datee: new Date()
}

 

 

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

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

相关文章

Mac 配置SourceTree集成云效

1、背景 工作使用的是自己的笔记本,一个是比较卡,在一个是敏感信息比较多还是使用公司的电脑,但是系统是Mac就很麻烦,在网上找了帖子记录一下 2、配置 打开终端 ssh-keygen -t rsa #一直回车就行 cd .ssh cat id_rsa.pub #查…

Kubernetes中常见的volumes数据卷

华子目录 volumesk8s支持的卷的类型emptyDir卷功能emptyDir的使用场景示例 hostPath卷功能用法安全隐患示例 nfs卷功能应用示例:部署一台nfs服务器并在所有k8s节点中安装nfs-utils volumes 容器中文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序…

PaddleNLP的FAQ问答机器人

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【DDRNet模型创新实现人像分割】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实…

Windows的MySQL开机自动启动问题

标题 问题描述 问题描述 在Windows系统中,我设置好了MySQL服务为自动启动,但在开机后发现MySQL服务任没有自动运行。我有点苦恼,每次连接MySQL,都要进入计算机管理,手动打开。 解决方法: 1.前提安装好MySQ…

基于Spring Boot的私房菜定制上门服务系统的设计与实现

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统私房菜定制上门服务系统信息管理难度大,容错率…

计算机毕业设计 | 基于SpringBoot的健身房管理系统(附源码)

1,项目背景 随着人们生活水平的提高和健康意识的增强,健身行业逐渐兴起并迅速发展。而现代化的健身房管理系统已经成为健身房发展的必备工具之一。传统的健身房管理方式已经无法满足现代化健身房的需求,需要一种更加高效、智能、安全的管理系…

LeetCode 0685.冗余连接 II:并查集(和I有何不同分析)——详细题解(附图)

【LetMeFly】685.冗余连接 II:并查集(和I有何不同分析)——详细题解(附图) 力扣题目链接:https://leetcode.cn/problems/redundant-connection-ii/ 在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点&…

前端请求后端接口报错(blocked:mixed-content),以及解决办法

报错原因:被浏览器拦截了,因为接口地址不是https的。 什么是混合内容(Mixed Content) 混合内容是指在同一页面中同时包含安全(HTTPS)和非安全(HTTP)资源的情况。当浏览器试图加载非…

SMTP协议,即简单邮件传输协议

SMTP协议,即简单邮件传输协议(Simple Mail Transfer Protocol),是一种用于发送电子邮件的互联网标准。以下是对SMTP协议的详细介绍: 一、定义与工作原理 SMTP定义了邮件服务器之间以及邮件客户端与服务器之间的通信规…

Xss_less靶场攻略(1-18)

xss-lab-less1 ur特殊字符转义 存在url中 转义符为 %2B& 转义符为 %26空格 转义符为 或 %20/ 转义符为 %2F? 转义符为 %3F% 转义符为 %25#转义符为 %23 转义符为 %3Dimg 标签懒加载 在XSS攻击中,img标签的src属性是一个常见的攻击向量,因为它可以…

Unity humanoid 模型头发动画失效问题

在上一篇【Unity实战笔记】第二十二 提到humanoid 模型会使原先的头发动画失效,如下图所示: 头发摆动的是generic模型和动画,不动的是humanoid模型和动画 一开始我是尝试过在模型Optimize Game objects手动添加缺失的头发骨骼的,奈…

基于MATLAB的战术手势识别

手势识别的研究起步于20世纪末,由于计算机技术的发展,特别是近年来虚拟现实技术的发展,手势识别的研究也到达一个新的高度。熵分析法是韩国的李金石、李振恩等人通过从背景复杂的视频数据中分割出人的手势形状,然后计算手型的质心…

CSS学习之Grid网格布局基本概念、容器属性

网格布局 网格布局(Grid)是将网页划分成一个个网格单元,可任意组合不同的网格,轻松实现各种布局效果,也是目前CSS中最强大布局方案,比Flex更强大。 基本概念 容器和项目 当一个 HTML 元素将 display 属性…

Yelp 数据集进行用户画像, 使用聚类做推荐

使用 Yelp 数据集进行用户画像(User Profiling)是一项有趣的任务,可以理解用户的偏好、行为和特征。以下是总结的一个基本的步骤,帮助构建用户画像 pandas 加载数据: import pandas as pd# 加载数据 users pd.read_…

JAVA题目笔记(十) 带有继承结构的JavaBean类

一、创建带有继承结构的标准JavaBean类(1) public class Worker {private String name;private int workid;private int salary;public Worker(){}public Worker(String name,int workid,int payment){this.namename;this.salarypayment;this.workidworkid;}public void eat(){…

keepalive+mysql8双主

1.概述 利用keepalived实现Mysql数据库的高可用,KeepalivedMysql双主来实现MYSQL-HA,我们必须保证两台Mysql数据库的数据完全一致,实现方法是两台Mysql互为主从关系,通过keepalived配置VIP,实现当其中的一台Mysql数据库…

【C++笔记】容器适配器及deque和仿函数

【C笔记】容器适配器及deque和仿函数 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】容器适配器及deque和仿函数前言一.容器适配器1.1什么是容器适配器1.2 STL标准库中stack和queue的底层结构 二.stack2.1stack类模…

centos7.X zabbix监控参数以及邮件报警和钉钉报警

1:zabbix安装 1.1 zabbix 环境要求 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低) 操作系统: Linux centos7.2 x86_64 Python 2.7.x Mariadb Server ≥ 5.5.56 httpd-2.4.6-93.el7.centos.x86_64 PHP 5.4.161.2 zabbix安装版本 [rootnod…

基于向量检索的RAG大模型

一、什么是向量 向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如,二维空间中的向量可以表示为 (𝑥,𝑦) ,表示从原点 (0,0)到点 (𝑥,𝑦)的有向线段。 1.1、文本向量 1…

串口屏控制的自动滑轨(未完工)

序言 疫情期间自己制作了一个自动滑轨,基于无线遥控的,但是整体太大了,非常不方便携带,所以重新设计了一个新的,以2020铝型材做导轨的滑轨,目前2020做滑轨已经很成熟了,配件也都非常便宜&#x…