持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30点击查看活动详情
解释:
事件(event)是通过系统本身或者在不同的时刻发生一定的动作变化而发出的。就像在我们使用鼠标按下的时候,他会有左右键按下的区别,鼠标位置的改变,这些原因都可能会导致窗口进行重绘或者隐藏显示,而做这些操作的背后是因为他们触发了不同的事件,有这些事件内部而进行的的反应。
Qt 中event时间主要分为两大类,用户交互时发生以及系统自动发生。
在与用户交互时发生 比如按下鼠标(mousePressEvent),鼠标移动(mousePressEvent)等,这些函数都是继承与他的总事件Event类,在Event类中对他们对这些事件处理的函数定义为虚函数,就是为了在使用这些函数的时候,可以通过我们自身的需求对它进行重写,在重写的内容上最后一定要调用父类的相应事件处理函数来实现默认的操作。例如:在使用mouseMoveEvent事件的时候,要函数结束之前写上QWidget::mouseMoveEvent(event); 以便实现函数的默认操作。
protected:
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
系统自动发生 定时事件是最有特点的胸膛自发事件,他不需要我们做任何的操控,在内部的定时器触发后他就会执行定时事件。
事件发生的顺序
在事件发生的过程中也有一定的顺序而言,最先触发的是事件过滤器,再次会发生的是event函数中的一些小事件,类似于鼠标移动、鼠标按下等等,这里要注意的是鼠标的焦点可能会被忽略,如果焦点忽略了这个时间那他不会再去执行事件所触发的函数,他回去执行它的父所触发的事件处理函数。
总事件 Event
所有的事件都是从总事件中引申而来的,例如键盘按下的事件,在对其进行判断的时候一定要用QEvent::KeyPress 的形成才能正确获取到键盘按下。