我是靠谱客的博主 机智盼望,最近开发中收集的这篇文章主要介绍Qt事件专栏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 事件用起来比信号槽要简单

  • 事件处理的流程:当有一个事件如鼠标双击事件被触发,则会在return app.exec();中监测到,它会把事件转换成一个对象,将对象传递给event()函数,这个函数不会立即处理,而是给了事件处理器(类似于swatch(事件对象a),从而调用响应的事件处理函数)。

  • 如果一个控件需要接收鼠标点击事件或者其他事件,那么就必须重写一个类,继承某种控件,并在ui界面中将控件提升为该类,然后在类的.cpp文件中重写事件处理函数

  • 所有的事件处理函数全部都是虚函数,需要重新实现(返回值,函数名,函数参数都不能改变),如果改变了就成了自己定义的函数而不是虚函数了。另外,事件处理函数都是保护类型的,最好有protected,虽然写public也不会报错。

在这里插入图片描述

  • QMouseEvent主要代表着鼠标事件的一些具体属性,如双击,按下,抬起,移动,xy坐标等,

  • 当获取到坐标时,坐标是一个int类型,如需要转换到str类型,则可以按照如下方式进行格式化。

在这里插入图片描述

  • 如果鼠标左键按下或者右键按下都可以在任何一个函数下进行判断:

在这里插入图片描述

  • 对于鼠标事件,要想一进来就有效,则要在控件的构造函数中做设定。(该控件是自定义控件)

在这里插入图片描述

  • 一个东西,你传给我,我如果接收了,就不会再向下传递了,如果我不接收,就会继续向下传递,如果一个控件继承了QPushButton,那么事件能继续向下传递的语句如下:

在这里插入图片描述

  • 每一个窗口都有一个event()函数,每一个控件也都有event函数,主要工作是事件的分发,如果要让某种事件不起作用,则可以直接重载event()函数。事件过滤器bool eventFilter(QObject *watched,QEvent *event)在event函数执行之前,*watched代表要过滤哪一个控件,*event代表要过滤哪一个事件。有事件过滤器后,就不需要重载event了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在主窗口重载事件过滤器时,对需要过滤要进行安装过滤器操作,下图是具体的操作步骤
在这里插入图片描述

  • 事件过滤器和被安装过滤器的组件必须在同一线程,否则过滤器将不起作用。

最后

以上就是机智盼望为你收集整理的Qt事件专栏的全部内容,希望文章能够帮你解决Qt事件专栏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部