事件是各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称
1、 QObject的子类都都可以接收和处理事件
2、 一个事件由一个特定的QEvent子类来表示
3、 有时一个事件包含多个事件类型鼠标事件包含(鼠标按下,鼠标双击,鼠标移动)
4、 这些事件类型都由QEvent类的举枚类型QEvent::ytpe来表示(其中包含一百多种事件类型)
5、 QEvent可以表示一个事件但是却不能用来处理事件:
由5种可以处理事件的方法
方法一:重新实现paintEvent(),mousePressEvent()等事件处理函数(它只能用来处理特定部件的特定事件)
方法二:重新实现notify()函数:功能强大提供了完全的控制,可以在事件过滤器得到事件之前得到它。但是一次只能处理一个事件
方法三:向QApplication安装事件过滤器;可以同时处理多个事件
方法四:重新实现event()函数:QObjet类的event可以在事件达到默认的事件处理函数之前获得事件
方法五:在对象上安装事件过滤器;使用事件过滤器可以在一个界面类种同时处理不同子部件的不同事件
常用的是方法一和方法五,方法二和方法三会减慢事件的传递所有虽然功能强大但是很少用
每个程序的main()函数最后都会调用exec()函数它会使qt应用程序进入事件循环,可以程序运行就可以接收发生的各种事件,一旦都事件发生,qt会构建一个QEvent子类的对象来表示,然后他会相应的传递给QObject对象或其子类:
事件是先传递给具有焦点的部件,如果该部件忽悠了该事件,那么这个事件就传递给其父部件
QMouseEvent表示一个鼠标事件
QMouseEvent表示可以获知鼠标是哪个键按下、鼠标位置等信息
QWheelEvent表示鼠标滚轮事件
定时器事件与随机数
QTimerEvent类用来描述一个定时器
使用QTimer类来实现一个定时器
随机数:qrand()和qsrand()两个函数实现的
Int h=Qrand()%300在300以内的整数。
安装事件过滤器于事件的发送
它不是一个类是由两个函数组成installEventFilter()和eventFilter(),都是QObject类
QLineEdit::keyPressEvent(event); //执行事件默认处理
ecent->ignore(); // 忽略事件
博主QQ交流群:778212048