QT拾遗

Qt5中,任何的static函数,成员函数,全局函数,仿函数,Lambda函数都可以链接到信号函数上,不过注意信号函数还是需要显示的通过signals来声明。

只是此时的语法是

QObject::connect(&sender,&SenderClass::sig, gfunc/functor...)

void sig()是信号函数。


Qt中的事件处理函数都是protected virtual 的,也就是派生类如果没有重写,调用的会是基类的事件处理函数。另外,事件可以在Qt的对象树中传播,由子对象传递给父对象,不过由于事件默认的是 accept()的,不会向上传播,如果需要将事件向父对象传播,可以在事件处理函数中调用事件的ignore()函数。

比如自定义一个按钮控件,按钮控件放在一个窗体上,作为窗体的子对象。如果如要在按钮按下的时候,让窗体也能作出对应的动作,便需要在按钮的void mousePressEvent(QMouseEvent *event) 鼠标点击事件函数中,调用事件的event->ignore()函数让事件能够继续传播给父对象。区别说法:调用父类的事件处理方法让事件继续传播给父对象


注意由于qmake只对.h文件中的Q_OBJECT进行处理,所以对于要使用信号和槽的类单独的在头文件中声明,在源文件中给出定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值