Qt中事件过滤器一般是用在继承QObject的类中,但是更多的是用在继承QWidget的界面类中。在界面类中,一般用的最多的是鼠标和键盘事件,包括鼠标摁下、移入、移除、拖拽等。一般在鼠标做出相应动作时,系统就会自动发送对应事件,然后被事件过滤器捕获,从而执行逻辑业务代码。

注意:事件过滤器作用域只在该界面内有效;出了该界面,在该界面重写的事件过滤器无效!!!

也即是如果我在QPushbutton内重写的事件过滤器,只能捕获该QPushbutton的各类事件,不能捕获该按钮以外的事件!

下面代码是Qt事件过滤器中所有事件枚举类型QEvent::type定义:

enum Type {
/*
If you get a strange compiler error on the line with None,
it’s probably because you’re also including X11 headers,
which #define the symbol None. Put the X11 includes after
the Qt includes to solve this problem.
*/
None = 0, // invalid event
Timer = 1, // timer event
MouseButtonPress = 2, // mouse button pressed
MouseButtonRelease = 3, // mouse button released
MouseButtonDblClick = 4, // mouse button double click
MouseMove = 5, // mouse move
KeyPress = 6, // key pressed
KeyRelease = 7, // key released
FocusIn = 8, // keyboard focus received
FocusOut = 9, // keyboard focus lost
FocusAboutToChange = 23, // keyboard focus is about to be lost
Enter = 10, // mouse enters widget
Leave = 11, // mouse leaves widget
Paint = 12, // paint widget
Move = 13, // move widget
Resize = 14, // resize widget
Create = 15, // after widget creation
Destroy = 16, // during widget destruction
Show = 17, // widget is shown
Hide = 18, // widget is hidden
Close = 19, // request to close widget
Quit = 20, // request to quit application
ParentChange = 21, // widget has been reparented
ParentAboutToChange = 131, // sent just before the parent change is done
ThreadChange = 22, // object has changed threads
WindowActivate = 24, // window was activated
WindowDeactivate = 25, // window was deactivated
ShowToParent = 26, // widget is shown to parent
HideToParent = 27, // widget is hidden to parent
Wheel = 31, // wheel event
WindowTitleChange = 33, // window title changed
WindowIconChange = 34, // icon changed
ApplicationWindowIconChange = 35, // application icon changed
ApplicationFontChange = 36, // application font changed
ApplicationLayoutDirectionChange = 37, // application layout direction changed
ApplicationPaletteChange = 38, // application palette changed
PaletteChange = 39, // widget palette changed
Clipboard = 40, // internal clipboard event
Speech = 42, // reserved for speech input
MetaCall = 43, // meta call event
SockAct = 50, // socket activation
WinEventAct = 132, // win event activation
DeferredDelete = 52, // deferred delete event
DragEnter = 60, // drag moves into widget
DragMove = 61, // drag moves in widget
DragLeave = 62, // drag leaves or is cancelled
Drop = 63, // actual drop
DragResponse = 64, // drag accepted/rejected
ChildAdded = 68, // new child widget
ChildPolished = 69, // polished child widget
ChildRemoved = 71, // deleted child widget
ShowWindowRequest = 73, // widget’s window should be mapped
PolishRequest = 74, // widget should be polished
Polish = 75, // widget is polished
LayoutRequest = 76, // widget should be relayouted
UpdateRequest = 77, // widget should be repainted
UpdateLater = 78, // request update() later

    EmbeddingControl = 79,                  // ActiveX embeddingActivateControl = 80,                   // ActiveX activationDeactivateControl = 81,                 // ActiveX deactivationContextMenu = 82,                       // context popup menuInputMethod = 83,                       // input methodTabletMove = 87,                        // Wacom tablet eventLocaleChange = 88,                      // the system locale changedLanguageChange = 89,                    // the application language changedLayoutDirectionChange = 90,             // the layout direction changedStyle = 91,                             // internal style eventTabletPress = 92,                       // tablet pressTabletRelease = 93,                     // tablet releaseOkRequest = 94,                         // CE (Ok) button pressedHelpRequest = 95,                       // CE (?)  button pressedIconDrag = 96,                          // proxy icon draggedFontChange = 97,                        // font has changedEnabledChange = 98,                     // enabled state has changedActivationChange = 99,                  // window activation has changedStyleChange = 100,                      // style has changedIconTextChange = 101,                   // icon text has changed.  Deprecated.ModifiedChange = 102,                   // modified state has changedMouseTrackingChange = 109,              // mouse tracking state has changedWindowBlocked = 103,                    // window is about to be blocked modallyWindowUnblocked = 104,                  // windows modal blocking has endedWindowStateChange = 105,ReadOnlyChange = 106,                   // readonly state has changedToolTip = 110,WhatsThis = 111,StatusTip = 112,ActionChanged = 113,ActionAdded = 114,ActionRemoved = 115,FileOpen = 116,                         // file open requestShortcut = 117,                         // shortcut triggeredShortcutOverride = 51,                  // shortcut override requestWhatsThisClicked = 118,ToolBarChange = 120,                    // toolbar visibility toggledApplicationActivate = 121,              // deprecated. Use ApplicationStateChange instead.ApplicationActivated = ApplicationActivate, // deprecatedApplicationDeactivate = 122,            // deprecated. Use ApplicationStateChange instead.ApplicationDeactivated = ApplicationDeactivate, // deprecatedQueryWhatsThis = 123,                   // query what's this widget helpEnterWhatsThisMode = 124,LeaveWhatsThisMode = 125,ZOrderChange = 126,                     // child widget has had its z-order changedHoverEnter = 127,                       // mouse cursor enters a hover widgetHoverLeave = 128,                       // mouse cursor leaves a hover widgetHoverMove = 129,                        // mouse cursor move inside a hover widget// last event id used = 132

#ifdef QT_KEYPAD_NAVIGATION
EnterEditFocus = 150, // enter edit mode in keypad navigation
LeaveEditFocus = 151, // enter edit mode in keypad navigation
#endif
AcceptDropsChange = 152,

    ZeroTimerEvent = 154,                   // Used for Windows Zero timer eventsGraphicsSceneMouseMove = 155,           // GraphicsViewGraphicsSceneMousePress = 156,GraphicsSceneMouseRelease = 157,GraphicsSceneMouseDoubleClick = 158,GraphicsSceneContextMenu = 159,GraphicsSceneHoverEnter = 160,GraphicsSceneHoverMove = 161,GraphicsSceneHoverLeave = 162,GraphicsSceneHelp = 163,GraphicsSceneDragEnter = 164,GraphicsSceneDragMove = 165,GraphicsSceneDragLeave = 166,GraphicsSceneDrop = 167,GraphicsSceneWheel = 168,KeyboardLayoutChange = 169,             // keyboard layout changedDynamicPropertyChange = 170,            // A dynamic property was changed through setProperty/propertyTabletEnterProximity = 171,TabletLeaveProximity = 172,NonClientAreaMouseMove = 173,NonClientAreaMouseButtonPress = 174,NonClientAreaMouseButtonRelease = 175,NonClientAreaMouseButtonDblClick = 176,MacSizeChange = 177,                    // when the Qt::WA_Mac{Normal,Small,Mini}Size changesContentsRectChange = 178,               // sent by QWidget::setContentsMargins (internal)MacGLWindowChange = 179,                // Internal! the window of the GLWidget has changedFutureCallOut = 180,GraphicsSceneResize  = 181,GraphicsSceneMove  = 182,CursorChange = 183,ToolTipChange = 184,NetworkReplyUpdated = 185,              // Internal for QNetworkReplyGrabMouse = 186,UngrabMouse = 187,GrabKeyboard = 188,UngrabKeyboard = 189,MacGLClearDrawable = 191,               // Internal Cocoa, the window has changed, so we must clearStateMachineSignal = 192,StateMachineWrapped = 193,TouchBegin = 194,TouchUpdate = 195,TouchEnd = 196,

#ifndef QT_NO_GESTURES
NativeGesture = 197, // QtGui native gesture
#endif
RequestSoftwareInputPanel = 199,
CloseSoftwareInputPanel = 200,

    WinIdChange = 203,

#ifndef QT_NO_GESTURES
Gesture = 198,
GestureOverride = 202,
#endif
ScrollPrepare = 204,
Scroll = 205,

    Expose = 206,InputMethodQuery = 207,OrientationChange = 208,                // Screen orientation has changedTouchCancel = 209,ThemeChange = 210,SockClose = 211,                        // socket closedPlatformPanel = 212,StyleAnimationUpdate = 213,             // style animation target should be updatedApplicationStateChange = 214,WindowChangeInternal = 215,             // internal for QQuickWidgetScreenChangeInternal = 216,PlatformSurface = 217,                  // Platform surface created or about to be destroyedPointer = 218,                          // QQuickPointerEvent; ### Qt 6: QPointerEventTabletTrackingChange = 219,             // tablet tracking state has changed// 512 reserved for Qt Jambi's MetaCall event// 513 reserved for Qt Jambi's DeleteOnMainThread eventUser = 1000,                            // first user event idMaxUser = 65535                         // last user event id
}

————————————————

Qt中事件过滤器eventFilter中所有枚举事件总结相关推荐

  1. 解决Qt graphis-view框架中,上层图元接收hover事件导致底层图元接收不到的问题

    问题重现 两个图元,一个在上面,名为item_up,一个在下面,名为item_below. 当item_up->setAcceptHoverEvents(true)时,item_up可以接收到鼠 ...

  2. QT事件过滤器eventFilter函数

    Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理. 假设我们有一个CustomerInfoDialog控件,由一些QLineEd ...

  3. Qt安装事件过滤器、过滤子控件事件、截获控件按键、鼠标事件

    Qt安装事件过滤器.过滤子控件事件.截获控件按键.鼠标事件 Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理. 假设我们有一个C ...

  4. Qt之事件过滤器(eventFilter)详解

    1.2.1 Qt中事件是如何进行传递 1.2.2 Qt中的事件过滤器(eventFilter) 1.2.3 如何自己模拟发送事件消息 一.Qt中事件过滤器详解 我们先看下另外两个相关的方法,一个是给对 ...

  5. Qt 图形视图框架中的事件处理和传播

    目录名字 Qt 图形视图框架中的事件处理和传播 要点: Qt 图形视图框架中的事件处理和传播 图形视图框架在一些动画类的应用程序上经常会用到.该框架中的事件处理与传播机制也是经常会涉及. 程序设计核心 ...

  6. 在C#中使用代理的方式触发事件

    事件(event)是一个非常重要的概念,我们的程序时刻都在触发和接收着各种事件:鼠标点击事件,键盘事件,以及处理操作系统的各种事件.所谓事件就是由某个对象发出的消息.比如用户按下了某个按钮,某个文件发 ...

  7. 原生js中如果有多个onload事件解决方案

    原生js中如果有多个onload事件解决方案 参考文章: (1)原生js中如果有多个onload事件解决方案 (2)https://www.cnblogs.com/happy-8090/p/11830 ...

  8. 在C#中使用代理的方式触发事件 (委托和事件 ) (转)

    From:  http://www.cnblogs.com/gzhnan/articles/1859477.html 在C#中使用代理的方式触发事件 (委托和事件 ) 事件(event)是一个非常重要 ...

  9. mysql等待事件类型_Oracle中常见的33个等待事件小结

    在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待事件的相关信息 一. 等待事件的相关知识 1.1 等待事件主要可以分为两 ...

最新文章

  1. 国内IT图书出版的未来之路
  2. 有人能用外行人解释什么是JSONP吗? [重复]
  3. oracle在哪些系统运行,ORACLE 查看系统运行情况
  4. 获取go语言官方文档的两个方法
  5. 十二. 一步步破解JEB 2.0demo版二
  6. Unity3D游戏-愤怒的小鸟游戏源码和教程(二)
  7. 微信环境中如何实现下载apk文件的下载
  8. 移动端https抓包那些事--初级篇
  9. 深度学习之表面缺陷识别
  10. 【算法系列之十四】最大子序和
  11. 【题解】(图论) —— POJ 0714:兔子与星空
  12. TDDFT计算软件Octopus学习笔记(七): 二维材料计算(WS2)
  13. 构建工具 | Gulp压缩JavaScript文件
  14. 计算机室内设计绘图,室内设计中手绘和电脑制图的比较
  15. excel 在一列中查找某个值的出现次数 countif函数
  16. 行链接(Row Chaining)和行迁移(Row Migration)
  17. spss分析方法-多个独立样本检验(转载)
  18. 笔试题-武汉珞珈德毅笔试题
  19. 网络协议 交换机基础
  20. layui点击按钮弹出另一个界面(增加界面),layui弹出层

热门文章

  1. 苹果手机android设备可以删除吗,手机系统自带软件怎么卸载?苹果/安卓软件卸载攻略...
  2. 误将桌面的计算机图标删除,如何恢复误删除的"桌面图标"
  3. 抓包工具mitmprox
  4. 【华为云技术分享】华为云弹性云服务器ECS搭建FTP服务实践
  5. 涉及 GitHub、GitLab,研究人员发现 70 个 Web 缓存中毒漏洞;微软:许多攻击者仍对 Log4j 漏洞加以利用;VS 2022 新版发布 | 开源日报
  6. Linux部署人大金仓(Kingbase8)
  7. HDOJ 2021-2030
  8. 路由器上的usb接口有什么用_解决USB接口不够用,毕亚兹Type-C扩展坞体验测评
  9. 施米德胡贝,被遗忘的人工智能教父
  10. 个人博客系统【项目篇】