0


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对象,并通过对象来获得信号并与槽函数绑定,该方法较为繁琐,就不做介绍了。

标签: qt c++ 交互

本文转载自: https://blog.csdn.net/qq_42558591/article/details/139975968
版权归原作者 可颂笪 所有, 如有侵权,请联系我们删除。

“qml与c++交互通信(二)qml端发送信号并绑定c++端槽函数”的评论:

还没有评论