系统相关
- 一.鼠标事件
- 二.键盘事件
- 三.定时器
事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在个同的的刻友出的。当用广投下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件是在用户操作时发出,如键盘事件、鼠标事件等,另一些事件则是由系统本身自动发出,如定时器事件。
信号槽实际上就是对事件的进一步封装,如果有些情况下,例如:该用户的动作没有对应的信号;此时就要通过重写事件来达到目的。
简而言之,就是让一段代码与一个事件关联起来,当事件触发时就会执行这段代码。
事件处理⼀般常⽤的⽅法为:重写相关的Event函数。
一.鼠标事件
代码示例1:重写鼠标进入和离开
接下来就重写enterEvent和leaveEvent。
代码示例2:获取鼠标点击的位置
- 鼠标双击事件->mouseDoubleClickEvent()
- 鼠标移动事件->mouseMoveEvent(),注意这个事件setMouseTracking()函数默认是false,需要设置为true,才能实时捕获⿏标位置信息。否则只有当⿏标按下时才能捕获其位置信息。
- 鼠标滚轮事件->QWheelEvent(),轮滑动的距离可以通过delta()函数获取
二.键盘事件
Qt中的按键事件是通过QKeyEvent类来实现的。当键盘上的按键被按下或者被释放时,键盘事件便会触发。在帮助文档中查找QKeyEvent类的主要函数如下:
查找按键事件中所有的按键类型:在帮助⽂档中输⼊:Qt::Key,如下图:
1.单个按键:当某个按键按下就输出该按键
注意:此时要想输出,鼠标必须放在Widget界面上,让该界面处于激活状态。
2.组合按键
Qt将能够进行组合的键单独划分了出来,放在了Qt::KeyboardModifier类里。
三.定时器
Qt中在进行窗口程序的处理过程中,经常要周期性的执行某些操作,或者制作一些动画效果,使用定时器就可以实现。所谓定时器就是在间隔一定时间后,去执行某一个任务。定时器在很多场景下都会使用到,如弹窗自动关闭之类的功能等。
Qt中的定时器分为QTimerEvent和 QTimer这2个类。
QTimerEvent类用来描述一个定时器事件。在使用时需要通过startTimer()函数来开启一个定时器,这个函数需要输入一个以毫秒为单位的整数作为参数来表明设定的时间,它返回的整型值代表这个定时器。当定时器溢出时(即定时时间到达)就可以在timerEvent()函数中获取该定时器的编号来进行相关操作。
QTimer类来实现一个定时器,它提供了更高层次的编程接口,如:可以使用信号和槽,还可以设置只运行一次的定时器。
重写timerEvent
同时,moveEvent窗口移动时触发的事件,risizeEvent窗口大小改变时触发的事件。