QT拾遗

来源:互联网 发布:浙江大学人工智能 编辑:程序博客网 时间:2024/05/01 08:22

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进行处理,所以对于要使用信号和槽的类单独的在头文件中声明,在源文件中给出定义。

0 0
原创粉丝点击