相关基础知识请看《对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
---> 编程是一件怎么也学不会的事情,但是如果能享受学习的过程也是挺好的。