QT 鼠标点击事件

501 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情

前言

在QT的使用过程中,使用获取鼠标事件的内容非常多,我们可以通过在鼠标点击移除等等操作之后,通过重写系统中的函数,对其进行多一步的操作。Qt事件主要包括鼠标事件和键盘事件两种。我们今天介绍的是鼠标事件。

在QT中,所有的事件都来自于QEvent这个父类,因此,在鼠标事件的使用过程中那必然少不了他的出现,但是QEvent他里面有许许多多的子类,我们字啊使用鼠标事件时使用的时QMouseEvent 这个类。但是滚轮事件于鼠标事件不是使用同一种方法,滚轮事件使用的时QWheelEvent这个类。

在事件的对象创建之后,QT会吧这个对象传递给 event()函数。但是这个函数并不会直接处理我们的事件,而是将它进行分类,派送给他的孩子完成处理。每个孩子都会有自己指定的事件类别。

头文件

在我们的使用过程中,需要现在头文件中进行定义

protected:
    void mousePressEvent(QWheelEvent *event);

鼠标按下事件

void mousePressEvent(QMouseEvent *e); 鼠标按下

鼠标释放事件

void mouseReleaseEvent(QMouseEvent *e); 鼠标释放

鼠标移动事件

void mouseMoveEvent(QMouseEvent *e); 鼠标移动

鼠标双击事件

void mouseDoubleClickEvent(QMouseEvent *e); 鼠标双击

鼠标滚轮事件

void wheelEvent(QWheelEvent *event);

最后 在写完函数内部消息以后 一定记得在最后加上一句类似于QWidget::mousePressEvent(event); 的内容 。

但是我们通过点击鼠标可以发现,触发的是QMouseEvent的事件,他也会阻塞住mousePressEvent的事件。 这里需要注意的是:在把不用阻塞分发的时候,需要分发给父类的event函数处理。

总结

以上的方法仅仅是鼠标时间的一部分,大家有需要可以在官网查到全部的内容,并会有详细的解释,而我写的内容仅为自己理解的表达。

今天的更新到此结束 希望各位大佬批评指正!