【入门】QML中的信号和槽
相关基础知识请看《对qml的感性认识》
信号和槽是Qt中非常有用的一种机制,通过信号触发槽函数执行这种方式大大简化了Qt
编程的难度。这么好用的东西自然会沿用到QML上。以下为QML中的几种信号/槽:
1.信号触发响应
当元素的信号发送时触发响应,响应的格式为:on + 信号,其中信号的首字母大写。
如MouseArea元素有一个信号clicked,响应该信号的程序叫onClicked,其中Clicked的首字母为大写。
例:
MouseArea是一种不可见的元素,在这里用它覆盖Text,当点击MouseArea时,触发
onClicked从而改变文本的内容。通过这种方式实现点击文本改变其内容的功能。
除了元素内置的信号,我们可以自定义信号,响应自定义信号的格式是一样的。自定义信号
用signal声明。
例:
例子中自定义了一个信号mysignal(),其对应的响应为onMysignal。对于自定义的信号肯定要
我们自己去触发,也就是调用它。如parent.mysignal()。parent表示父元素,在例子中指的就是root。
运行程序点击矩形任意位置可以看到文字内容变为“自定义的信号触发了”。
2.属性改变时触发响应
当元素的属性改变也会触发响应,响应的格式为:on + 属性名 + Changed。其中属性名的首字母也要大写。
例:
当root矩形的宽度发生变化时触发onWidthChanged。程序的运行效果是当矩形宽度拉伸
到宽度大于400时,文字的内容变为root飘了。
属性改变触发响应同样适用于自定义的属性,测试一下:
例子中自定义了一个属性count,当count改变时触发onCountChanged。我们
通过点击MouseArea来改变count的值。运行程序,点击矩形任意位置,看到
文字改变了。
---> 文章来源于我的个人博客:fearlazy
---> 编程是一件怎么也学不会的事情,但是如果能享受学习的过程也是挺好的。