本篇文章是对来自🤝BiliBili-清晨与猫鱼的QML教程的学习笔记,原视频链接👇
https://www.bilibili.com/video/BV1Ay4y1W7xd?spm_id_from=..search-card.all.click&vd_source=4079f59f2068471b4d379822052e0270


QML的信号与槽

  以Button为例,其信号函数在其父类中定义
Button的信号函数
  槽函数的格式为,信号函数前加on且第一个字母大写,例:clicked()的槽函数为onClicked:{ }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls
import QtQuick.Layouts

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

Button { //定义一个按钮
id: btn1 //按钮的ID
width: 60 //按钮的宽度
height: 30 //按钮的高度
text: "Ok"
//clicked()信号的槽函数
onClicked: { //按钮按下触发的槽函数
console.log('btn click')//打印信息
}
}
}

Button的信号与槽

控件的属性

  以Button为例,其属性函数在其父类中定义
Button的属性函数
  基本上每一个属性函数都有一个槽函数与之对应的变化的信号,例:text属性的变化信号为textChanged,对应的槽函数为onTextChanged:{ }
  但是Qt文档里并没有提到这一点

1
2
3
4
5
6
7
8
9
onTextChanged: {                            //当text被改变时触发的槽函数
console.log('btn text',text)//打印被改变后的文字
}

//clicked()信号的槽函数
onClicked: {
console.log('btn click')
text = 'change' //将text变为'change'
}

Button属性的槽函数

只读属性

  在属性中存在一种只读属性only-read,这种属性只能读取不能更改
  例:pressed:bool,该属性保存按钮是否被物理按下。按钮可以通过触摸或按键事件来按下