目录
一、介绍
事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制时,都会发出一个相应的事件。一些事件是在用户操作时发出,如键盘事件、鼠标事件等,另一些事件则是由系统本身自动发出,如定时器事件
常见的Qt事件如下:
二、进入离开事件
事件处理一般常用的方法为:重写相关的Event函数
在Qt中,几乎所有的Event函数都是虚函数,所以可以重新实现。如:在实现鼠标的进入和离开事件时,直接重新实现 enterEvent() 和 leaveEvent() 即可
enterEvent() 和 leaveEvent() 函数原型如下:
代码示例
新建Qt项目,基类选择QWidget,同时勾选UI界面文件,如下图示:
设计UI文件,如下图示:
在项目中新添加一个类:MyLabel,先选中项目名称QEvent,点击鼠标右键,选择add new...,弹出如下对话框:
选择:Choose....,弹出如下界面:
此时项目中会新添加以下两个文件:
项目文件"mylabel.h"
重写enterEvent()方法
在UI文件中选中Label,右键 -> 提升为...
当点击"提升为..."之后,弹出如下对话框:
修改基类
三、鼠标事件
在Qt中,鼠标事件是用QMouseEvent类来实现的。当在窗口中按下鼠标或者移动鼠标时,都会产生鼠标事件。利用QMouseEvent类可以获取鼠标的哪个键被按下了以及鼠标的当前位置等信息
在Qt帮助文档中查找QMouseEvent类,如下图示:
3.1 鼠标单击事件
在Qt中,鼠标按下是通过虚函数mousePressEvent()来捕获的
mousePressEvent()函数原型如下:
[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event)
- Qt::LeftButton 鼠标左键
- Qt::RightButton 鼠标右键
- Qt::MidButton 鼠标滚轮
代码示例:mousePressEvent()
在上述代码的基础上(进入离开事件),在mylabel.h中声明mousePressEvent()方法
在mylabel.cpp中重写mousePressE