1.QT事件机制:
QT的事件(比如鼠标左键单击)发生时,首先调用了基类QObject(比如QWidget)的event()函数,event函数将事件分发给各处理函数(protected里的虚函数,比如void mousePressEvent(QMouseEvent *;
)。
event函数本身也是虚函数,可以在自定义的子类中override event函数来提前对各事件进行处理,需要处理的事件再传给基类(QWidget::event())。不过不推荐。
bool MyWidget::event(QEvent *e)
{
if(e->type() == QEvent::Timer)
{
//干掉定时器
//如果返回true,事件停止传播
//QTimerEvent *env = static_cast<QTimerEvent *>(e);
//timerEvent(env);
return true;
}
else if(e->type() == QEvent::KeyPress)
{
//类型转换
QKeyEvent *env = static_cast<QKeyEvent *>(e)