qml与c++交互通信(二)qml端发送信号并绑定c++端槽函数

qml与c++的信号绑定通常是在qml界面端设置一个信号,而需要绑定c++界面的槽函数。在或者是c++设置的信号,需要绑定qml界面端的槽函数。这篇博客主要介绍qml与c++之间的信号绑定方法。

1、qml端设置发送信号绑定c++端的槽函数

首先,需要在qml端设置一个信号,并出发这个信号。

在qml端设置信号后,需要在c++端设置槽函数。设置如下:

并在函数上点击Alt+Enter键添加在源文件中的定义。在源文件中,添加该槽函数的具体实现,如下:

这时,已经添加了qml端的信号和c++端的槽函数。那么现在就需要将这两个信号和槽函数连接起来即可。而连接信号和槽函数的方法有两种,这里分别介绍:

1.1、使用Connections方法连接信号和槽

在qml端添加Connections来连接。如下:

target表示的是发送信号者,这个qmlsig是设置在窗体中的信号,因此触发信号的是该窗体。

下面的function则是设置处理信号的槽函数方法。on+首字母大写(对应的信号)表示的是这个信号处理对应的槽函数方法,并传入对应参数。在函数体中,我们间接调用了在qml端创建对象的槽函数方法。

对应的测试输出正常。

总结,这种方法可以实现信号与槽函数的绑定,但从Connections函数中,感觉并不是像传统的信号槽连接方法,更像是直接调用该对象的函数。

1.2使用信号名+.connect+(槽函数名)

第二种方法是直接使用信号名加connect来直接绑定槽函数,具体方法代码如下:

我们在控件完成加载后,使用该方法绑定信号和槽函数,可以同样实现功能。

上述的两种方法都是在qml端代码中绑定了c++端的槽函数。同样可以在c++端来绑定qml端的信号和c++端和槽函数。具体是在engine.load(url);中engine加载完成以后,使用engine.rootObjects,这个可以得到我们的加载的qml文件里面的所有object对象,并通过对象来获得信号并与槽函数绑定,该方法较为繁琐,就不做介绍了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值