-
事件用起来比信号槽要简单
-
事件处理的流程:当有一个事件如鼠标双击事件被触发,则会在return app.exec();中监测到,它会把事件转换成一个对象,将对象传递给event()函数,这个函数不会立即处理,而是给了事件处理器(类似于swatch(事件对象a),从而调用响应的事件处理函数)。
-
如果一个控件需要接收鼠标点击事件或者其他事件,那么就必须重写一个类,继承某种控件,并在ui界面中将控件提升为该类,然后在类的.cpp文件中重写事件处理函数
-
所有的事件处理函数全部都是虚函数,需要重新实现(返回值,函数名,函数参数都不能改变),如果改变了就成了自己定义的函数而不是虚函数了。另外,事件处理函数都是保护类型的,最好有protected,虽然写public也不会报错。
-
每一个窗口都有一个event()函数,每一个控件也都有event函数,主要工作是事件的分发,如果要让某种事件不起作用,则可以直接重载event()函数。事件过滤器bool eventFilter(QObject *watched,QEvent *event)在event函数执行之前,*watched代表要过滤哪一个控件,*event代表要过滤哪一个事件。有事件过滤器后,就不需要重载event了
在主窗口重载事件过滤器时,对需要过滤要进行安装过滤器操作,下图是具体的操作步骤