QT 实现点击窗口以外任何位置即关闭窗口
2017-11-20 11:07
495 查看
bool QTipLabel::eventFilter(QObject *o, QEvent *e) { switch (e->type()) { #ifdef Q_DEAD_CODE_FROM_QT4_MAC case QEvent::KeyPress: case QEvent::KeyRelease: { int key = static_cast<QKeyEvent *>(e)->key(); Qt::KeyboardModifiers mody = static_cast<QKeyEvent *>(e)->modifiers(); if (!(mody & Qt::KeyboardModifierMask) && key != Qt::Key_Shift && key != Qt::Key_Control && key != Qt::Key_Alt && key != Qt::Key_Meta) hideTip(); break; } #endif case QEvent::Leave: hideTip(); break; #if defined (Q_OS_QNX) // On QNX the window activate and focus events are delayed and will appear // after the window is shown. case QEvent::WindowActivate: case QEvent::FocusIn: return false; case QEvent::WindowDeactivate: if (o != this) return false; hideTipImmediately(); break; case QEvent::FocusOut: if (reinterpret_cast<QWindow*>(o) != windowHandle()) return false; hideTipImmediately(); break; #else case QEvent::WindowActivate: case QEvent::WindowDeactivate: case QEvent::FocusIn: case QEvent::FocusOut: #endif case QEvent::Close: // For QTBUG-55523 (QQC) specifically: Hide tooltip when windows are closed case QEvent::MouseButtonPress: case QEvent::MouseButtonRelease: case QEvent::MouseButtonDblClick: case QEvent::Wheel: hideTipImmediately(); break; case QEvent::MouseMove: if (o == widget && !rect.isNull() && !rect.contains(static_cast<QMouseEvent*>(e)->pos())) hideTip(); default: break; } return false; }
然后在初始化时 注册 eventfilter
qApp->installEventFilter(this);
相关文章推荐
- qt实现点击输入框弹出输入面板和改变窗口的位置
- JQuery实现点击div以外的位置隐藏该div窗口
- JQuery实现点击div以外的位置隐藏该div窗口
- JQuery实现点击div以外的位置隐藏该div窗口
- qt最小化窗口后实现与点击任务栏一样的恢复任务
- JQuery实现点击div以外的位置隐藏该div
- QT实现窗口缩放打开与关闭
- 点击页面任何位置隐藏div的实现方法
- JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
- 在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口
- [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作
- WinFrom中实现点击关闭按钮窗口在靠屏幕左边中间缓缓收缩
- 穿透鼠标实现后台点击,适用于任何窗口!【后台鼠标】【风雪】
- Qt中点击关闭任务栏而不退出程序的实现方法
- 两种方法实现点击窗口任意位置的拖拽
- 在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口
- [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作
- Qt实现窗口关闭动画效果
- jquery 点击弹出层自身以外的任意位置,关闭弹出层
- 用户控件 + ScriptManager 实现点击后弹出窗口且窗口坐标追随点击位置效果