Qt 中的事件-10

Qt中的事件为QEvent,常用的是点击或移动鼠标来触发事件。

一、Qt中的鼠标进入和离开事件

如鼠标移入和离开都会有对应的事件,在此使用Label控件来测试对应的鼠标进入和移出事件。

1、创建自定义Label控件

因为要通过Label来实现检测鼠标的进入和移出事件,需要自定义控件。具体是通过对Label进行封装处理。
在此可以通过C++代码来实现对应的功能,不使用ui。在当前项目上右键,选择添加新文件,选择如下选项。
在这里插入图片描述
自定义类名为myWidget,基类为QWidget,将会产生两个文件,分别为: mywidget.hmywidget.cpp

在这里插入图片描述

2、代码实现对应的控件动作

(1)、mywidget.h中声明对应函数

在这里插入图片描述
(2)、mywidget.cpp中实现对应函数

在这里插入图片描述
(3)、进入到 mainwindow.ui文件中拖拽Label控件。因为该控件的类型为QLabel,要提升为自定义控件的话,必须要保证自定义控件的类与需要提升的控件类型保持一致,由于当前自定义控件与目标控件类型不一致,所以要将自定义控件继承的类从QWidget修改为QLabel

在这里插入图片描述
要修改的地方如下图红色方框所示:
在这里插入图片描述
在这里插入图片描述
然后对其进行提升,类名为myWidget,依次点击添加提升 即可。提升后其类型如下所示。

在这里插入图片描述

3、运行结果如下所示

当鼠标进入和移出时,会提示如下所示的信息

在这里插入图片描述


二、按下、松开和移动鼠标事件

常用的鼠标事件分别为:mousePressEventmouseReleaseEventmouseMoveEvent

在这里插入图片描述
在这里插入图片描述
运行结果如下图:

在这里插入图片描述

【注】:如果希望鼠标只要在Label上一移动,就会触发对应的事件,则可以设置鼠标追踪为真。

在这里插入图片描述


三、定时器事件-方法1

设置定时器的事件QTimerEvent,定时器的事件就是timerEvent。它是一个虚函数,可以对其按照自己的需求进行重写操作。
需求:有两个定时器,一个定时器每隔1秒递增一次,另一个计时器每隔2秒递增一次。

在这里插入图片描述

  • 首先添加两个Label控件用来分别显示这两个定时器
  • label_2是每隔一秒递增一次;label_3是每隔2秒递增一次
  • QTimerEvent中的计时器是通过timerId()来进行区分哪个计时器执行操作,其返回值为int类型。

实现代码如下图所示:
在这里插入图片描述
在这里插入图片描述
运行结果如下图:

在这里插入图片描述


四、定时器事件-方法2(推荐)
1、用Timer类来实现定时器方法一所实现的功能,会在逻辑上更加清晰、独立,也更容易理解。
  • 利用定时器类QTimer创建定时器对象 timer
  • 启动定时器timer->start(interval)
  • 每隔一定时间间隔发送信号 timeout,并进行监听

代码如下:

在这里插入图片描述
运行结果如下图:

在这里插入图片描述

2、添加一个按钮,点击即暂停

在这里插入图片描述
结果如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值