Qt5.9Creator中自定义信号SIGNAL和在另一个类中用该信号触发槽函数用法

本文章主要总结在Qt5.9Creator中自定义一个信号,然后在另一个类里面用该信号触发槽函数的实例。具体的实例是在类ClassA中自定义一个信号Signal1,然后在MAinWindows类中用该信号Signal1来触发槽函数SlotFunction()的调用。


注意:

1.使用信号与槽机制,一定要是QObject类和QObject派生类才有效,否则该机制是无效的。

2.使用信号与槽机制时,需要在类的头文件的第一行加入Q_OBJECT宏,同时该类最好是QObject的派生类。

3.如果正确使用信号与槽机制,同时没有语法错误;但是编译时仍然报错,这时可以尝试把编译出的build*文件整个删除,然后再次编译。(有时是编译过的build文件对信号与槽机制有影响)


一、具体实例用法

1.1新建一个widget工程,工程名称为SignalTest,基类选择QMainWindows。然后在ui界面上拖入一个pushButton按钮和添加按钮槽函数,如下图所示:



1.2新添加一个C++类,类名为ClassA,基类选择为QObject,如下图所示:



1.3在classa.h头文件中,添加一个自定义信号Signal1,同时添加一个Test()成员函数,如下代码所示:



1.4在源文件classa.cpp中,添加如下代码:



1.5接下来,要在主窗口MAinWindows类中,用一个槽函数绑定该信号,同时调用这个信号。在MAinWindows.h头文件中,实例一个类ClassA的对象,代码如下:





1.6在MAinWindows.h头文件中,添加一个槽函数,该槽函数的作用是与自定义的信号Signal1绑定,代码如下:



1.7在MAinWindows.cpp的构造函数中,初始化指针和绑定自定义信号,代码如下:



1.8在MAinWindows.cpp的按钮槽函数中,添加如下代码:



1.9在自定义槽函数中,添加如下代码:



二、构建程序和运行结果,如下图所示:





由上图结果可知,点击按钮后,触发按钮槽函数;然后按钮槽函数调用ClassA的Test()函数;Test()函数每被调用一次,就触发一次Signal1信号;由于Signal1信号与槽函数SlotFunction()绑定,故触发Signal1信号后,立刻触发SlotFunction()槽函数;而SlotFunction()槽函数的功能是输出一条语句。所以上图结果表明,在一个新建的类(ClassA类)里面自定义一个信号(Signal1),然后在另一个类(MAinWindows类)里面调用该信号,用该信号来触发槽函数的调用,是正确可行的。


三、源代码资源下载:

http://download.csdn.net/download/naibozhuan3744/10270045



参考内容:

http://www.cnblogs.com/ike_li/p/4990626.html(重点参考)

http://blog.csdn.net/u012964993/article/details/30454923

  • 16
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三公子Tjq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值