Qt EventFilter的一些坑

今天希望实现拖放文件显示的功能

因此安装了一个eventFilter

结果由于没有return true导致的无法生效的问题

 

 

参考 https://www.cnblogs.com/god-of-death/p/7815720.html

在Qt中,当一个事件发生时(例如鼠标点击或某个键盘上的按键按下),其传递顺序如图所示。从这个图可以看出,事件过滤器首先获得事件,其次才是部件的 event 函数,最后是部件的事件处理函数

 

事件过滤器由QObject类中的两个函数来实现。

一个是 installEventFilter,它负责在相应部件上安装事件过滤器,其声明为:

void QObject::installEventFilter(QObject *filterObj);

其中,filterObj参数表示要在其上实现事件过滤器函数的部件。请注意,如果我们在一个部件安装了事件过滤器,一般在其父控件上实现事件过滤器函数。

顺序为eventFilter->event->mousePressEvent

 

 

最后自己总计一下

鼠标点击部件的接受顺序

0 安装过滤器的部件

1 点击的部件event

2 点击部件基类的event

3 点击部件的mousePressEvent

4 点击部件基类的mousePressEvent

5 点击部件的夫部件

 

 

发布了9 篇原创文章 · 获赞 3 · 访问量 1601
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览