Qt ------ 覆盖eventFilter(),捕获组件事件,事件处理
2023-09-11 14:19:53 时间
在Qt中,当一个事件发生时(例如鼠标点击或某个键盘上的按键按下),其传递顺序如图所示。从这个图可以看出,事件过滤器首先获得事件,其次才是部件的 event 函数,最后是部件的事件处理函数
事件过滤器由QObject类中的两个函数来实现。
一个是 installEventFilter,它负责在相应部件上安装事件过滤器,其声明为:
void QObject::installEventFilter(QObject *filterObj);
其中,filterObj参数表示要在其上实现事件过滤器函数的部件。请注意,如果我们在一个部件安装了事件过滤器,一般在其父控件上实现事件过滤器函数。
第二个函数是 eventFilter 函数,我们在此函数中实现事件过滤器。请注意:该函数在 QObject 类中声明为一个虚函数,因此只能由 QObject 的子类继承使用
例子:
相关文章
- qt创建多层目录_Qt多工程多目录的编译案例
- QT开发:QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection'...
- Qt多个信号连接到一个槽,在槽中识别信号的发送者方法(实验 可行)
- qt中xe运行缺少组件,Qt-c++桌面编程报错:qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““,最终解决方案
- QT中QThread的各个方法,UI线程关系,事件关系详解(4)
- Qt-事件过滤器eventFilter概念及使用方法实例
- 关于Qt的事件循环以及QEventLoop的简单使用
- QT消息/事件循环机制与多线程的关系
- Qt 之 消息机制和事件讲解
- 【QT】Qt::UserRole的作用
- 【QT】自定义工程封装成DLL并如何调用(带ui界面的)
- 【QT】Qt 使用MSVC2017找不到编译器的解决办法
- 【QT】Qt 5 的程序:打印文档
- 【QT】Qt多版本交叉编译所遇到的问题以及如何解决(重在思路过程)
- Qt数据库应用18-横向纵向排版
- Qt音视频开发49-通用截图截屏
- Qt编写安防视频监控系统34-onvif事件订阅
- Qt编写控件属性设计器1-加载插件
- Qt 6中的输入事件
- qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新(Qt5.1解决了这个问题。但实际Qt5.7还有这个问题)
- accept()函数用来告诉Qt,事件处理函数“接收”了这个事件,不要再传递;ignore()函数则告诉Qt,事件处理函数“忽略”了这个事件,需要继续传递(看一下QWidget::mousePressEvent的实现,最为典型。如果希望忽略事件,只要调用父类的响应函数即可)
- Qt之QLocalServer
- Qt之QCustomPlot(图形库)
- Qt之自定义界面(添加自定义标题栏)
- Qt ------ 再论事件循环
- 【正点原子Linux连载】第十一章 网络编程 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2
- Qt移动应用开发(二):使用动画框架
- qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""