Qt中的事件为QEvent,常用的是点击或移动鼠标来触发事件。
如鼠标移入和离开都会有对应的事件,在此使用Label控件来测试对应的鼠标进入和移出事件。
因为要通过Label来实现检测鼠标的进入和移出事件,需要自定义控件。具体是通过对Label进行封装处理。 在此可以通过C++代码来实现对应的功能,不使用ui。在当前项目上右键,选择添加新文件,选择如下选项。 自定义类名为myWidget,基类为QWidget,将会产生两个文件,分别为: mywidget.h和mywidget.cpp
(1)、mywidget.h中声明对应函数
(2)、mywidget.cpp中实现对应函数
(3)、进入到 mainwindow.ui文件中拖拽Label控件。因为该控件的类型为QLabel,要提升为自定义控件的话,必须要保证自定义控件的类与需要提升的控件类型保持一致,由于当前自定义控件与目标控件类型不一致,所以要将自定义控件继承的类从QWidget修改为QLabel
要修改的地方如下图红色方框所示: 然后对其进行提升,类名为myWidget,依次点击添加、提升 即可。提升后其类型如下所示。
当鼠标进入和移出时,会提示如下所示的信息
常用的鼠标事件分别为:mousePressEvent 、mouseReleaseEvent 、mouseMoveEvent 。
运行结果如下图:
【注】:如果希望鼠标只要在Label上一移动,就会触发对应的事件,则可以设置鼠标追踪为真。
设置定时器的事件QTimerEvent,定时器的事件就是timerEvent。它是一个虚函数,可以对其按照自己的需求进行重写操作。 需求:有两个定时器,一个定时器每隔1秒递增一次,另一个计时器每隔2秒递增一次。
首先添加两个Label控件用来分别显示这两个定时器label_2是每隔一秒递增一次;label_3是每隔2秒递增一次QTimerEvent中的计时器是通过timerId()来进行区分哪个计时器执行操作,其返回值为int类型。实现代码如下图所示: 运行结果如下图:
代码如下:
运行结果如下图:
结果如下