当事件发生时,Qt 将创建一个事件对象。Qt 中所有事件类都继承于QEvent。在事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是按照事件对象的类型分派给特定的事件处理函数(event handler)。
使用程序代码对event的事件分发进行相关描述:
bool MyWidget::event(QEvent *event)
{
//事件分发,若在MyWidget中产生了事件则必须经过该函数去进行事件分发。
/*
switch (event->type())
{
case QEvent::Close:
closeEvent(event);
break ;
case QEvent::MouseMove:
mouseMoveEvent(event);
break ;
/*后面类似进行分发*/
}
}
如上所述,event()函数主要用于事件的分发。所以,如果你希望在事件分发之前做一些操作,就可以重写这个event()函数了。例如我们想要定时器停止工作,并且在键盘事件中只对'B'键按下做出反应,相关程序如下:
bool My